0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CNN大致框架!如何組裝構(gòu)成CNN?

深度學(xué)習(xí)自然語(yǔ)言處理 ? 來(lái)源:深度學(xué)習(xí)自然語(yǔ)言處理 ? 作者:云不見(jiàn) ? 2020-08-28 09:44 ? 次閱讀

本文重點(diǎn)知識(shí)點(diǎn):

CNN的大致框架

卷積層

池化層

卷積層和池化層的實(shí)現(xiàn)

CNN的實(shí)現(xiàn)

CNN可視化介紹

如有細(xì)節(jié)處沒(méi)有寫(xiě)到的,請(qǐng)繼續(xù)精讀《深度學(xué)習(xí)入門(mén):基于Python的理論與實(shí)現(xiàn)》,對(duì)小白來(lái)說(shuō)真的是非常好的深度學(xué)習(xí)的入門(mén)書(shū)籍,通俗易懂。(書(shū)中的例子主要是基于CV的)
一、CNN大致框架

神經(jīng)網(wǎng)絡(luò):就是組裝層的過(guò)程。

CNN出現(xiàn)了新的層:卷積層、池化層。

Q:如何組裝構(gòu)成CNN?

全連接層:用Affine實(shí)現(xiàn)的:Affine-ReLU (Affine仿射變換 y = xw+b),如下為基于全連接層的5層神經(jīng)網(wǎng)絡(luò)。

ReLU也可替換成Sigmoid層,這里由4層Affine-ReLU組成,最后由Affine-Softmax輸出最終結(jié)果(概率) 常見(jiàn)的CNN:Affine-ReLU 變 Conv-ReLU-(Pooling),如下為基于CNN的五層神經(jīng)網(wǎng)絡(luò)。

Q:全連接層有什么問(wèn)題嘛?為什么要改進(jìn)為Conv層?

全連接層“忽視”了數(shù)據(jù)的形狀,3維數(shù)據(jù)被拉平為1維數(shù)據(jù);形狀因含有重要的空間信息:①空間臨近的像素為相似的值,相距較遠(yuǎn)的像素沒(méi)什么關(guān)系;②RBG的各個(gè)通道之間分別有密切的關(guān)聯(lián)性等;③3維形狀中可能隱藏有值得提取的本質(zhì)模式。

而卷積層可以保持形狀不變。可以正確理解圖像等具有形狀的數(shù)據(jù)。

特征圖:輸入、輸出數(shù)據(jù)
二、卷積層 2.1 卷積運(yùn)算

輸入特征圖與卷積核作乘積累加運(yùn)算,窗口以一定的步長(zhǎng)滑動(dòng),得到輸出特征圖,也可以加偏置(1*1)

卷積核(濾波器)相當(dāng)于全連接層中的權(quán)重。 卷積完后,偏置將應(yīng)用于所有數(shù)據(jù)

2.2 填充(padding)
向輸入數(shù)據(jù)的周?chē)钊牍潭ǖ臄?shù)據(jù)(比如0等) 填充的目的:調(diào)整輸出的大小。擴(kuò)大輸入特征圖,得到大一些的輸出。一般填充為0。 為什么要調(diào)整輸出的大???因?yàn)楸热巛斎耄?×4),卷積核為(3×3),得到輸出為(2×2),隨著層的加深,卷積完的輸出越來(lái)越小,直到輸出變1以后將無(wú)法再進(jìn)行卷積運(yùn)行。為了避免這樣的情況發(fā)生,需要用到填充,使輸出至少不會(huì)減小。

2.3 步幅(stride) 用途:指定濾波器的間隔。 步幅增大,輸出減小;填充增大,輸出增大。 計(jì)算輸出的大?。?/p>

其中:

(OH,OW) 輸出大小

(H,W) 輸入大小

(FH,FW) 濾波器大小

P 填充

S 步幅

注:式(7.1)中最好可以除盡。if無(wú)法除盡,需報(bào)錯(cuò)?;蛘呦蜃罱咏恼麛?shù)四舍五入,不進(jìn)行報(bào)錯(cuò)而繼續(xù)運(yùn)行。 2.4 三維數(shù)據(jù)的卷積運(yùn)算 (通道方向,高,長(zhǎng)):比二維數(shù)據(jù)多了一個(gè):通道方向,特征圖增加了 (Channel,height,width) (C,H,W)

方塊思維,上下兩張圖是一個(gè)意思。

輸入數(shù)據(jù)和濾波器的通道數(shù)是保持一致的。 每個(gè)通道分別卷積計(jì)算出值,再將各通道的值相加得到最終的一個(gè)輸出值。 這樣只能得到一個(gè)通道數(shù)的輸出,怎樣使得輸出也多通道訥?

應(yīng)用多個(gè)濾波器(權(quán)重),比如FN個(gè)。如下圖所示。

濾波器變四維,一個(gè)濾波器對(duì)應(yīng)一個(gè)輸出特征圖。還可追加偏置(FN,1,1) 作為4維數(shù)據(jù),濾波器按(output_channel, input_channel, height, width) 的順序書(shū)寫(xiě)。 比如,通道數(shù)為 3、大小為 5 × 5 的濾波器有20個(gè)時(shí),可以寫(xiě)成(20, 3, 5, 5)。 不同形狀的方塊相加時(shí),可以基于NumPy的廣播功能輕松實(shí)現(xiàn)(1.5.5節(jié))。 2.5 批處理

目的:實(shí)現(xiàn)數(shù)據(jù)的高效化,打包N個(gè)數(shù)據(jù)一起處理。即將N次處理匯總為一次

3維——> 4維,即(C,H,W) ——> (N,C,H,W)


三、池化層

目的:縮小H,W方向上的空間的運(yùn)算。比如將2 × 2區(qū)域集約成1個(gè)元素來(lái)處理,縮小空間大小。

Max池化:獲取最大值的運(yùn)算 一般設(shè)置:池化的窗口大小和步幅設(shè)定成相同的值。比如這里都是2。 在圖像識(shí)別中,主要用Max池化。 池化層的特征:

沒(méi)有要學(xué)習(xí)的參數(shù)

通道數(shù)不發(fā)生變化,輸入3張,輸出也是3張;

對(duì)微小的位置變化具有魯棒性(健壯),即輸入數(shù)據(jù)發(fā)生微小偏差時(shí),池化也可以返回相同的結(jié)果;即池化能吸收輸入數(shù)據(jù)的偏差。


四、Conv層和Pooling層的實(shí)現(xiàn) 4.1 4維數(shù)組

例如:隨機(jī)生成一個(gè)四維數(shù)據(jù)(10,1,28,28) 10個(gè)通道數(shù)為1,高長(zhǎng)為28的數(shù)據(jù)

>>> x = np.random.rand(10, 1, 28, 28) # 隨機(jī)生成10個(gè)通道數(shù)為1,高長(zhǎng)為28的輸入數(shù)據(jù)>>> x.shape(10,1,28,28)

>>> x[0].shape # (1, 28, 28) x[0]:第一個(gè)數(shù)據(jù)(第一個(gè)方塊)>>> x[1].shape # (1, 28, 28) x[1]:第二個(gè)數(shù)據(jù)>>> x[0, 0] # 或者x[0][0] 第一個(gè)數(shù)據(jù)的第一個(gè)通道>>>x[1,0]#或者x[1][0]第二個(gè)數(shù)據(jù)的第一個(gè)通道 4.2 基于im2col的展開(kāi)

問(wèn)題:實(shí)現(xiàn)卷積運(yùn)行,需要重復(fù)好幾層for,麻煩,而且numPy訪問(wèn)元素最好不要用 for(慢)

解決:用im2col函數(shù)(image to column 從圖像到矩陣):將輸入數(shù)據(jù)展開(kāi)以合適濾波器(權(quán)重)

將4維數(shù)據(jù) ——> 2維數(shù)據(jù)

(N,C,H,W),即(批處理器,通道數(shù),高,長(zhǎng))

使用im2col更消耗內(nèi)存,但轉(zhuǎn)換為矩陣運(yùn)算更高效,可有效利用線性代數(shù)庫(kù)。

4.3 卷積層的實(shí)現(xiàn)

im2col函數(shù):將4維數(shù)據(jù)輸入——> 2維數(shù)據(jù)輸入

x 輸入 4維——> 2維矩陣

W 濾波器 4維——> 2維矩陣

矩陣乘積 X*W + b ——> 輸出2維 —(reshape)—> 輸出4維

im2col(input_data,filter_h,filter_w,stride=1,pad=0)

卷積層forward的代碼實(shí)現(xiàn)

import sys, ossys.path.append(os.pardir)from common.util import im2col x1 = np.random.rand(1, 3, 7, 7) # 批大小為1、通道為3的7 × 7的數(shù)據(jù)col1 = im2col(x1, 5, 5, stride=1, pad=0)print(col1.shape) # (9, 75) x2 = np.random.rand(10, 3, 7, 7) # 批大小為10、通道為3的7 × 7的數(shù)據(jù)col2 = im2col(x2, 5, 5, stride=1, pad=0)print(col2.shape) # (90, 75) # 卷積層類class Convolution: def __init__(self, W, b, stride=1, pad=0): self.W = W self.b = b self.stride = stride self.pad = pad # 正向傳播 def forward(self, x): FN, C, FH, FW = self.W.shape N, C, H, W = x.shape out_h = int(1 + (H + 2*self.pad - FH) / self.stride) out_w = int(1 + (W + 2*self.pad - FW) / self.stride) col = im2col(x, FH, FW, self.stride, self.pad) col_W = self.W.reshape(FN, -1).T # 濾波器的展開(kāi) out = np.dot(col, col_W) + self.b out = out.reshape(N, out_h, out_w, -1).transpose(0, 3, 1, 2) return out #反向傳播在common/layer.py中,必須進(jìn)行im2col的逆處理——>col2im(矩陣轉(zhuǎn)圖像)

4.4 池化層的實(shí)現(xiàn)

使用im2col函數(shù)

在通道方向獨(dú)立,按通道單獨(dú)展開(kāi)(卷積層是最后各個(gè)通道相加)

池化層的forward實(shí)現(xiàn)代碼

class Pooling: def __init__(self, pool_h, pool_w, stride=1, pad=0): self.pool_h = pool_h self.pool_w = pool_w self.stride = stride self.pad = pad def forward(self, x): N, C, H, W = x.shape # 計(jì)算輸出大小 out_h = int(1 + (H - self.pool_h) / self.stride) out_w = int(1 + (W - self.pool_w) / self.stride) # 展開(kāi)(1) 1.展開(kāi)輸入數(shù)據(jù) col = im2col(x, self.pool_h, self.pool_w, self.stride, self.pad) col = col.reshape(-1, self.pool_h*self.pool_w) # 最大值(2) 2.求各行的最大值 out = np.max(col, axis=1) # 轉(zhuǎn)換(3) 3.轉(zhuǎn)換為合適的輸出大小 out = out.reshape(N, out_h, out_w, C).transpose(0, 3, 1, 2) return out

池化層的實(shí)現(xiàn)按下面3個(gè)階段進(jìn)行:

展開(kāi)輸入數(shù)據(jù)

求各行的最大值

轉(zhuǎn)換為合適的輸出大小


四、CNN實(shí)現(xiàn)

class SimpleConvNet: """簡(jiǎn)單的ConvNet conv - relu - pool - affine - relu - affine - softmax Parameters ---------- input_size : 輸入大?。∕NIST的情況下為784,三維(1, 28, 28)) hidden_size_list : 隱藏層的神經(jīng)元數(shù)量的列表(e.g. [100, 100, 100]) output_size : 輸出大小(MNIST的情況下為10,十種輸出可能) activation : 'relu' or 'sigmoid' weight_init_std : 指定權(quán)重的標(biāo)準(zhǔn)差(e.g. 0.01) 指定'relu'或'he'的情況下設(shè)定“He的初始值” 指定'sigmoid'或'xavier'的情況下設(shè)定“Xavier的初始值” """ def __init__(self, input_dim=(1, 28, 28), conv_param={'filter_num':30, 'filter_size':5, 'pad':0, 'stride':1}, hidden_size=100, output_size=10, weight_init_std=0.01): # 30個(gè)5*5的濾波器 # 取濾波器參數(shù)到conv_param字典中,備用 filter_num = conv_param['filter_num'] filter_size = conv_param['filter_size'] filter_pad = conv_param['pad'] filter_stride = conv_param['stride'] input_size = input_dim[1] # 28 conv_output_size = (input_size - filter_size + 2*filter_pad) / filter_stride + 1 pool_output_size = int(filter_num * (conv_output_size/2) * (conv_output_size/2)) # 池化層輸出,H,W減半 # 初始化權(quán)重,三層 self.params = {} # 濾波器就是第一層的權(quán)重 W1 = (30,1,5,5)(四維數(shù)據(jù)),即30個(gè)高、長(zhǎng)為5,通道數(shù)為1的數(shù)據(jù) self.params['W1'] = weight_init_std * np.random.randn(filter_num, input_dim[0], filter_size, filter_size) # 每一個(gè)濾波器都加一個(gè)偏置b1,有30個(gè) self.params['b1'] = np.zeros(filter_num) self.params['W2'] = weight_init_std * np.random.randn(pool_output_size, hidden_size) self.params['b2'] = np.zeros(hidden_size) self.params['W3'] = weight_init_std * np.random.randn(hidden_size, output_size) self.params['b3'] = np.zeros(output_size) # 生成層,用以調(diào)用 self.layers = OrderedDict() # 有序字典 self.layers['Conv1'] = Convolution(self.params['W1'], self.params['b1'], conv_param['stride'], conv_param['pad']) self.layers['Relu1'] = Relu() self.layers['Pool1'] = Pooling(pool_h=2, pool_w=2, stride=2) self.layers['Affine1'] = Affine(self.params['W2'], self.params['b2']) self.layers['Relu2'] = Relu() self.layers['Affine2'] = Affine(self.params['W3'], self.params['b3']) self.last_layer = SoftmaxWithLoss() # 前向傳播,從頭開(kāi)始依次調(diào)用層,并將結(jié)果傳給下一層 def predict(self, x): for layer in self.layers.values(): x = layer.forward(x) return x # 除了使用predict,還要進(jìn)行forward,直到到達(dá)最后的SoftmaxWithLoss層 def loss(self, x, t): """求損失函數(shù) 參數(shù)x是輸入數(shù)據(jù)、t是教師標(biāo)簽 """ y = self.predict(x) return self.last_layer.forward(y, t) def accuracy(self, x, t, batch_size=100): if t.ndim != 1 : t = np.argmax(t, axis=1) acc = 0.0 for i in range(int(x.shape[0] / batch_size)): tx = x[i*batch_size:(i+1)*batch_size] tt = t[i*batch_size:(i+1)*batch_size] y = self.predict(tx) y = np.argmax(y, axis=1) acc += np.sum(y == tt) return acc / x.shape[0] def numerical_gradient(self, x, t): """求梯度(數(shù)值微分) Parameters ---------- x : 輸入數(shù)據(jù) t : 教師標(biāo)簽 Returns ------- 具有各層的梯度的字典變量 grads['W1']、grads['W2']、...是各層的權(quán)重 grads['b1']、grads['b2']、...是各層的偏置 """ loss_w = lambda w: self.loss(x, t) grads = {} for idx in (1, 2, 3): grads['W' + str(idx)] = numerical_gradient(loss_w, self.params['W' + str(idx)]) grads['b' + str(idx)] = numerical_gradient(loss_w, self.params['b' + str(idx)]) return grads # 調(diào)用各層的backward,并把權(quán)重參數(shù)的梯度存到grads字典中 def gradient(self, x, t): """求梯度(誤差反向傳播法)(二選一) Parameters ---------- x : 輸入數(shù)據(jù) t : 教師標(biāo)簽 Returns ------- 具有各層的梯度的字典變量 grads['W1']、grads['W2']、...是各層的權(quán)重 grads['b1']、grads['b2']、...是各層的偏置 """ # forward self.loss(x, t) # backward dout = 1 dout = self.last_layer.backward(dout) layers = list(self.layers.values()) layers.reverse() for layer in layers: dout = layer.backward(dout) # 設(shè)定 grads = {} grads['W1'], grads['b1'] = self.layers['Conv1'].dW, self.layers['Conv1'].db grads['W2'], grads['b2'] = self.layers['Affine1'].dW, self.layers['Affine1'].db grads['W3'], grads['b3'] = self.layers['Affine2'].dW, self.layers['Affine2'].db
五、CNN可視化


濾波器會(huì)提取邊緣或斑塊等原始信息。隨著層的加深,提取的信息也愈加復(fù)雜。

提取信息愈加復(fù)雜:

邊緣——> 紋理——> 物體部件——> 分類

1998年,CNN元祖:LeNet——> 比如手寫(xiě)數(shù)字識(shí)別

2012年:深度學(xué)習(xí) AlexNet

他們都是疊加多個(gè)卷積層,池化層,最后經(jīng)由全連接層輸出

LeNet:

激活函數(shù)用sigmoid (現(xiàn)主要使用ReLU )

通過(guò)子采樣來(lái)縮小數(shù)據(jù)(現(xiàn)主要使用Max池化)

AlexNet:

激活函數(shù)用ReLU

使用進(jìn)行局部正規(guī)化的LRN層(local responce normalization)

使用dropout

關(guān)于網(wǎng)絡(luò)結(jié)構(gòu),LeNet和AlexNet沒(méi)太大差別,現(xiàn)如今大數(shù)據(jù)和GPU的快速發(fā)展推動(dòng)了深度學(xué)習(xí)的發(fā)展。 注:如有細(xì)節(jié)處沒(méi)有寫(xiě)到的,請(qǐng)繼續(xù)精讀《深度學(xué)習(xí)入門(mén)》,對(duì)小白來(lái)說(shuō)真的是非常通俗易懂的深度學(xué)習(xí)入門(mén)書(shū)籍。(書(shū)中的例子主要是基于CV的)

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4776

    瀏覽量

    100948
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5510

    瀏覽量

    121337
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    353

    瀏覽量

    22265

原文標(biāo)題:【基礎(chǔ)詳解】手磕實(shí)現(xiàn) CNN卷積神經(jīng)網(wǎng)絡(luò)!

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TF之CNNCNN實(shí)現(xiàn)mnist數(shù)據(jù)集預(yù)測(cè)

    TF之CNNCNN實(shí)現(xiàn)mnist數(shù)據(jù)集預(yù)測(cè) 96%采用placeholder用法+2層C及其max_pool法+隱藏層dropout法+輸出層softmax法+目標(biāo)函數(shù)cross_entropy法+
    發(fā)表于 12-19 17:02

    TF之CNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN的嘻嘻哈哈事之詳細(xì)攻略

    TF之CNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN的嘻嘻哈哈事之詳細(xì)攻略
    發(fā)表于 12-19 17:03

    大家是怎么壓榨CNN模型的

    【技術(shù)綜述】為了壓榨CNN模型,這幾年大家都干了什么
    發(fā)表于 05-29 14:49

    TensorFlow的CNN文本分類

    在TensorFlow中實(shí)現(xiàn)CNN進(jìn)行文本分類(譯)
    發(fā)表于 10-31 09:27

    卷積神經(jīng)網(wǎng)絡(luò)CNN介紹

    【深度學(xué)習(xí)】卷積神經(jīng)網(wǎng)絡(luò)CNN
    發(fā)表于 06-14 18:55

    如何利用PyTorch API構(gòu)建CNN?

      很多人對(duì)于卷積神經(jīng)網(wǎng)絡(luò)(CNN)并不了解,卷積神經(jīng)網(wǎng)絡(luò)是一種前饋神經(jīng)網(wǎng)絡(luò),它包括卷積計(jì)算并具有很深的結(jié)構(gòu),卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的代表性算法之一。那么如何利用PyTorch API構(gòu)建CNN
    發(fā)表于 07-16 18:13

    如何在嵌入式平臺(tái)實(shí)現(xiàn)CNN

    單片機(jī)(Cortex-M內(nèi)核,無(wú)操作系統(tǒng))可以跑深度學(xué)習(xí)嗎? ——Read Air 2019.8.20Xu_CNN框架待處理:1.需要設(shè)計(jì)一個(gè)可讀寫(xiě)的消息棧 ()2.函數(shù)的類型參數(shù)使用結(jié)構(gòu)體傳入 (已實(shí)現(xiàn))3.動(dòng)態(tài)...
    發(fā)表于 12-09 08:02

    如何將DS_CNN_S.pb轉(zhuǎn)換為ds_cnn_s.tflite?

    MIMRTX1064(SDK2.13.0)的KWS demo中放置了ds_cnn_s.tflite文件,提供demo中使用的模型示例。在 read.me 中,聲明我可以找到腳本,但是,該文檔中的腳本
    發(fā)表于 04-19 06:11

    一文詳解CNN

    1 CNN簡(jiǎn)介 CNN即卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks),是一類包含卷積計(jì)算的神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)(deep learning)的代表算法之一,在圖像識(shí)別
    發(fā)表于 08-18 06:56

    基于FPGA的通用CNN加速設(shè)計(jì)

    基于FPGA的通用CNN加速器整體框架如下,通過(guò)Caffe/Tensorflow/Mxnet等框架訓(xùn)練出來(lái)的CNN模型,通過(guò)編譯器的一系列優(yōu)化生成模型對(duì)應(yīng)的指令;同時(shí),圖片數(shù)據(jù)和模型權(quán)
    發(fā)表于 10-27 14:09 ?1w次閱讀
    基于FPGA的通用<b class='flag-5'>CNN</b>加速設(shè)計(jì)

    手把手教你操作Faster R-CNN和Mask R-CNN

    Mask R-CNN是承繼于Faster R-CNN,Mask R-CNN只是在Faster R-CNN上面增加了一個(gè)Mask Prediction Branch(Mask預(yù)測(cè)分支),
    的頭像 發(fā)表于 04-04 16:32 ?1.3w次閱讀

    自己動(dòng)手寫(xiě)CNN Inference框架之 (三) dense

    之前我們介紹過(guò)CNN inference框架的基本結(jié)構(gòu),如何從tensorflow的graph中提取conv2d的權(quán)重,隨后利用該權(quán)重進(jìn)行對(duì)應(yīng)的卷積操作。本文我...
    發(fā)表于 02-07 11:47 ?0次下載
    自己動(dòng)手寫(xiě)<b class='flag-5'>CNN</b> Inference<b class='flag-5'>框架</b>之 (三) dense

    自己動(dòng)手寫(xiě)CNN Inference框架之 (一) 開(kāi)篇

    服務(wù)器上的CNN訓(xùn)練框架很多,如tensorflow、pytorch、keras、caffe等等。該類框架在PC及服務(wù)器中的顯卡、高性能CPU中都有不錯(cuò)的性能表現(xiàn)...
    發(fā)表于 02-07 11:53 ?0次下載
    自己動(dòng)手寫(xiě)<b class='flag-5'>CNN</b> Inference<b class='flag-5'>框架</b>之 (一) 開(kāi)篇

    PyTorch教程14.8之基于區(qū)域的CNN(R-CNN)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程14.8之基于區(qū)域的CNN(R-CNN).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 11:09 ?0次下載
    PyTorch教程14.8之基于區(qū)域的<b class='flag-5'>CNN</b>(R-<b class='flag-5'>CNN</b>)

    PyTorch教程-14.8?;趨^(qū)域的 CNN (R-CNN)

    14.8?;趨^(qū)域的 CNN (R-CNN)? Colab [火炬]在 Colab 中打開(kāi)筆記本 Colab [mxnet] Open the notebook in Colab
    的頭像 發(fā)表于 06-05 15:44 ?679次閱讀
    PyTorch教程-14.8?;趨^(qū)域的 <b class='flag-5'>CNN</b> (R-<b class='flag-5'>CNN</b>)