国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

做資訊網(wǎng)站要什么手續(xù)公司怎么推廣網(wǎng)絡(luò)營(yíng)銷

做資訊網(wǎng)站要什么手續(xù),公司怎么推廣網(wǎng)絡(luò)營(yíng)銷,長(zhǎng)沙市建設(shè)局官方網(wǎng)站,無(wú)錫短視頻seoCNN簡(jiǎn)介與實(shí)現(xiàn) 導(dǎo)語(yǔ)整體結(jié)構(gòu)卷積層卷積填充步幅三維卷積立體化批處理 實(shí)現(xiàn) 池化層特點(diǎn)實(shí)現(xiàn) CNN實(shí)現(xiàn)可視化總結(jié)參考文獻(xiàn) 導(dǎo)語(yǔ) CNN全稱卷積神經(jīng)網(wǎng)絡(luò),可謂聲名遠(yuǎn)揚(yáng),被用于生活中的各個(gè)領(lǐng)域,也是最好理解的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)之一。 整體結(jié)構(gòu) 相較于…

CNN簡(jiǎn)介與實(shí)現(xiàn)

  • 導(dǎo)語(yǔ)
  • 整體結(jié)構(gòu)
  • 卷積層
    • 卷積
    • 填充
    • 步幅
    • 三維卷積
      • 立體化
      • 批處理
    • 實(shí)現(xiàn)
  • 池化層
    • 特點(diǎn)
    • 實(shí)現(xiàn)
  • CNN實(shí)現(xiàn)
  • 可視化
  • 總結(jié)
  • 參考文獻(xiàn)

導(dǎo)語(yǔ)

CNN全稱卷積神經(jīng)網(wǎng)絡(luò),可謂聲名遠(yuǎn)揚(yáng),被用于生活中的各個(gè)領(lǐng)域,也是最好理解的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)之一。

整體結(jié)構(gòu)

相較于先前的神經(jīng)網(wǎng)絡(luò),CNN出現(xiàn)了卷積層和池化層的概念,基本的組成模塊是“卷積-ReLU-池化”,并且,在靠近輸出或最后輸出時(shí)時(shí)仍會(huì)采用“Affine-ReLU”、"Affine-ReLU"的組合,書上給出的示例圖如下:

在這里插入圖片描述

卷積層

在思考為什么要用卷積層之前,我們可以先來(lái)看看卷積層之前的全連接層有什么局限性,全連接層通常要求輸入是一個(gè)一維的數(shù)組,即使原始數(shù)據(jù)是更高維的數(shù)據(jù),如高、長(zhǎng)、通道的三維圖像,這個(gè)時(shí)候,使用全連接層,原始數(shù)據(jù)中的幾何信息、點(diǎn)之間的相對(duì)位置等空間信息就都被清除了,這些信息其實(shí)很重要,因?yàn)辄c(diǎn)與點(diǎn)之間在高維空間的關(guān)聯(lián)性是比一維更強(qiáng)的。

相比之下,卷積層就考慮到了這些空間信息,當(dāng)輸入為圖像時(shí),卷積層會(huì)以三維數(shù)據(jù)的形式接受輸入數(shù)據(jù),并且輸出也是三維數(shù)據(jù)。

CNN中卷積層的輸入輸出數(shù)據(jù)被稱作特征圖,輸入叫輸入特征圖,輸出叫輸出特征圖。

卷積

卷積是卷積層的運(yùn)算,類似與圖像中的濾波器處理,具體做法如圖(圖源自網(wǎng)絡(luò),侵刪):

在這里插入圖片描述

此圖省略了卷積核,只給出了輸入和結(jié)果,以該圖為例,輸入是一個(gè)4×4的矩陣,在矩陣上存在一個(gè)3×3的滑動(dòng)窗口,窗口每次移動(dòng)一個(gè)單位,每次對(duì)窗口內(nèi)的矩陣A進(jìn)行一次權(quán)重累和,具體的權(quán)重為同等大小的卷積核矩陣,具體的例子如下, 36 = 1 × 1 + 2 × 1 + 0 × 3 + 4 × 0 + 5 × 2 + 6 × 0 + 7 × 1 + 8 × 2 + 1 × 1 36=1×1+2×1+0×3+4×0+5×2+6×0+7×1+8×2+1×1 36=1×1+2×1+0×3+4×0+5×2+6×0+7×1+8×2+1×1。

在這里插入圖片描述

與全連接層一樣,CNN中也存在偏置,對(duì)于算出的結(jié)果矩陣,對(duì)矩陣中的所有元素可以加上一個(gè)相同的偏置值。

填充

在進(jìn)行卷積前,有時(shí)候要把數(shù)據(jù)拓寬,例如把4×4拓成6×6,如何拓寬呢很簡(jiǎn)單,把不夠的部分都設(shè)置為同一個(gè)值就可以(一般是0或者1),具體操作如圖(圖源網(wǎng)絡(luò),侵刪):

在這里插入圖片描述

這種做法,就叫做填充,使用填充主要是為了調(diào)整輸出大小,在使用卷積核運(yùn)算的時(shí)候,如果不進(jìn)行填充,卷積的結(jié)果勢(shì)必會(huì)在整體上變小(如4×4變成2×2),多次使用后,最后的結(jié)果就可能只有一個(gè)1,因此使用填充來(lái)避免這種情況的發(fā)生。

步幅

步幅很容易理解,就是滑動(dòng)窗口的每次的移動(dòng)距離,像下面這張圖,就是步幅為2時(shí)候的卷積(圖源網(wǎng)絡(luò),侵刪):

在這里插入圖片描述
可以看到,增大步幅會(huì)使得輸出變小,加上填充會(huì)變大,這個(gè)時(shí)候就可以根據(jù)兩者關(guān)系列出卷積輸出結(jié)果的公式了。

書上的描述如下(值除不盡四舍五入):

在這里插入圖片描述

三維卷積

在現(xiàn)實(shí)使用中,CNN的輸入并不是一個(gè)單純的二維矩陣,輸入的圖像時(shí)一個(gè)帶有高、寬、通道的具體的特征圖,以RGB為例,RGB圖像是三通道,如果對(duì)RGB圖像進(jìn)行卷積,那么就要對(duì)圖像上的每一個(gè)通道都使用一個(gè)卷積核,通道方向有多個(gè)特征圖時(shí),需要按照通道方向進(jìn)行輸入數(shù)據(jù)和濾波器的卷積運(yùn)算,并將結(jié)果累和,生成一個(gè)新的二維矩陣。

立體化

當(dāng)我們把輸入和輸出推向更一般的適用情況,多通道輸入數(shù)據(jù)使用對(duì)應(yīng)的多通道核,最后輸出一張單個(gè)圖,書上的例子如下,其中C為通道數(shù)、H為高度、W為長(zhǎng)度。

在這里插入圖片描述

如果要再通道方向上也擁有多個(gè)卷積運(yùn)算的輸出,就需要使用多個(gè)濾波器(權(quán)重),書上的圖如下:

在這里插入圖片描述

如果再考慮上偏置,書上給出的圖如下:

在這里插入圖片描述

批處理

通常,為了加快效率,神經(jīng)網(wǎng)絡(luò)會(huì)將輸入數(shù)據(jù)進(jìn)行一批批的打包,一次性處理一堆數(shù)據(jù),為了處理一批數(shù)據(jù),需要在上一張圖的基礎(chǔ)上加上批次,書上給出的圖如下:

在這里插入圖片描述

數(shù)據(jù)作為4維數(shù)據(jù)在各層之間傳遞,批處理將N次處理匯總成了1次進(jìn)行。

實(shí)現(xiàn)

如果直接實(shí)現(xiàn)卷積運(yùn)算,利用for循環(huán),效率其實(shí)是不高的,況且python給出了更好的選擇:im2col函數(shù)。

im2col將輸入數(shù)據(jù)展開(kāi)來(lái)適合卷積核的計(jì)算,書上給出的圖如下:

在這里插入圖片描述

這里更詳細(xì)的解釋一下,輸入的是一個(gè)三維的數(shù)據(jù),把每一面(二維)從左到右,從上到下,拉成一個(gè)一維的數(shù)組,然后把每個(gè)通道的一維數(shù)組拼起來(lái),形成一個(gè)二維的矩陣,如果是多批次,就把這些矩陣首尾相連,形成一個(gè)更大的二維矩陣即可。

實(shí)際的卷積運(yùn)算中,卷積核的應(yīng)用區(qū)域幾乎彼此重疊,因此,在使用im2col之后,展開(kāi)的元素個(gè)數(shù)會(huì)多于原來(lái)的輸入元素個(gè)數(shù),所以會(huì)消耗更多的內(nèi)存。

書上給出了用im2col進(jìn)行卷積的流程:
在這里插入圖片描述
還需要明晰的一點(diǎn)是,im2col的使用并不會(huì)損失原數(shù)據(jù)在空間上的信息,它只是為了方便進(jìn)行矩陣對(duì)數(shù)據(jù)進(jìn)行了一些處理,并且在最后恢復(fù)了原來(lái)的數(shù)據(jù)模式。

書上給出了im2col和基于im2col實(shí)現(xiàn)的卷積層代碼如下:

def im2col(input_data, filter_h, filter_w, stride=1, pad=0):#輸入,高,長(zhǎng),步幅,填充N, C, H, W = input_data.shapeout_h = (H + 2*pad - filter_h)//stride + 1#根據(jù)步長(zhǎng)和高度計(jì)算輸出的長(zhǎng)高out_w = (W + 2*pad - filter_w)//stride + 1img = np.pad(input_data, [(0,0), (0,0), (pad, pad), (pad, pad)], 'constant')col = np.zeros((N, C, filter_h, filter_w, out_h, out_w))#設(shè)置一個(gè)空的拉伸之后的二維數(shù)組for y in range(filter_h):y_max = y + stride*out_hfor x in range(filter_w):x_max = x + stride*out_wcol[:, :, y, x, :, :] = img[:, :, y:y_max:stride, x:x_max:stride]col = col.transpose(0, 4, 5, 1, 2, 3).reshape(N*out_h*out_w, -1)return colClass Convolution:def __init__(self,W,b,stride=1,pad=0):#初始化賦值self.W=Wself.b=bself.stride=strideself.pad=paddef forward(self,x):FN,C,FH,FW=self.W.shapeN,C,H,W=x.shapeout_h=int(1+(H+2*self.pad-FH)/self.stride)#獲得填充和卷積之后的規(guī)模out_w=int(1+(W+2*self.pad-FW)/self.stride)col=im2col(x,FH,FW,self.stride,self.pad)#拉伸#卷積層反向傳播的時(shí)候,需要進(jìn)行im2col的逆處理col_W=self.W.reshape(FN,-1).T#把卷積核展開(kāi)out=np.dot(col,col_W)+self.bout=out.reshape(N,out_h,out_w,-1).transpose(0,3,1,2)#更改軸的順序,NHWC變成NCHWreturn outdef backward(self, dout):FN, C, FH, FW = self.W.shapedout = dout.transpose(0,2,3,1).reshape(-1, FN)self.db = np.sum(dout, axis=0)self.dW = np.dot(self.col.T, dout)self.dW = self.dW.transpose(1, 0).reshape(FN, C, FH, FW)dcol = np.dot(dout, self.col_W.T)dx = col2im(dcol, self.x.shape, FH, FW, self.stride, self.pad)#逆運(yùn)算return dx

池化層

簡(jiǎn)單來(lái)說(shuō),卷積是使用卷積核計(jì)算對(duì)應(yīng)區(qū)域的乘積和,池化層是選取對(duì)應(yīng)區(qū)域的最大值(也有其他的池化,比如平均值池化,指的是取對(duì)應(yīng)區(qū)域的平均值作為輸出),書上給出的例子如下:

在這里插入圖片描述

特點(diǎn)

池化層的操作很簡(jiǎn)單,不需要像卷積層那樣學(xué)習(xí)卷積核的參數(shù),只需要提取最值或平均即可;其次,池化層的計(jì)算是按照通道獨(dú)立進(jìn)行的,輸入和輸出的通道數(shù)不會(huì)變化;最后,池化層對(duì)輸入數(shù)據(jù)的微小偏差具有魯棒性(例如目標(biāo)區(qū)域的非最大值有變化,并不會(huì)影響池化層最后的輸出)。

實(shí)現(xiàn)

池化層也是用im2col展開(kāi),但展開(kāi)時(shí)在通道方向上是獨(dú)立的,書上給的圖示如下:

在這里插入圖片描述

書上的實(shí)現(xiàn)代碼如下:

class Pooling:def __init__(self, pool_h, pool_w, stride=1, pad=0):#初始化self.pool_h = pool_hself.pool_w = pool_wself.stride = strideself.pad = padself.x = Noneself.arg_max = Nonedef forward(self, x):#推理函數(shù)N, C, H, W = x.shapeout_h = int(1 + (H - self.pool_h) / self.stride)#拿到輸出大小out_w = int(1 + (W - self.pool_w) / self.stride)col = im2col(x, self.pool_h, self.pool_w, self.stride, self.pad)#拉伸col = col.reshape(-1, self.pool_h*self.pool_w)#變成二維矩陣arg_max = np.argmax(col, axis=1)out = np.max(col, axis=1)#取最值out = out.reshape(N, out_h, out_w, C).transpose(0, 3, 1, 2)#還原成數(shù)據(jù)self.x = xself.arg_max = arg_maxreturn outdef backward(self, dout):#反向傳播dout = dout.transpose(0, 2, 3, 1)pool_size = self.pool_h * self.pool_wdmax = np.zeros((dout.size, pool_size))dmax[np.arange(self.arg_max.size), self.arg_max.flatten()] = dout.flatten()dmax = dmax.reshape(dout.shape + (pool_size,)) dcol = dmax.reshape(dmax.shape[0] * dmax.shape[1] * dmax.shape[2], -1)dx = col2im(dcol, self.x.shape, self.pool_h, self.pool_w, self.stride, self.pad)return dx

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

將已經(jīng)實(shí)現(xiàn)的各個(gè)層進(jìn)行組合,就可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的CNN,書上給出了一個(gè)簡(jiǎn)單CNN的具體代碼實(shí)現(xiàn),具體圖如下:
在這里插入圖片描述

書上加上注釋的代碼如下:

class SimpleConvNet: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):#輸入大小,卷積核數(shù)量,卷積核大小,填充,步幅,隱藏層神經(jīng)元數(shù)量,輸出大小,初始權(quán)重標(biāo)準(zhǔn)差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]conv_output_size = (input_size - filter_size + 2*filter_pad) / filter_stride + 1pool_output_size = int(filter_num * (conv_output_size/2) * (conv_output_size/2))# 初始化權(quán)重self.params = {}self.params['W1'] = weight_init_std * \np.random.randn(filter_num, input_dim[0], filter_size, filter_size)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)# 生成層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()#損失函數(shù)def predict(self, x):#預(yù)測(cè)值for layer in self.layers.values():x = layer.forward(x)return xdef loss(self, x, t):#計(jì)算損失y = self.predict(x)return self.last_layer.forward(y, t)def accuracy(self, x, t, batch_size=100):#計(jì)算準(zhǔn)確度if t.ndim != 1 : t = np.argmax(t, axis=1)acc = 0.0for 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ù)值微分方法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 gradsdef gradient(self, x, t):#誤差反向傳播求梯度# forwardself.loss(x, t)# backwarddout = 1dout = 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'].dbgrads['W2'], grads['b2'] = self.layers['Affine1'].dW, self.layers['Affine1'].dbgrads['W3'], grads['b3'] = self.layers['Affine2'].dW, self.layers['Affine2'].dbreturn grads

訓(xùn)練所需要的時(shí)間相較于先前的方法比較久,但是得到的結(jié)果識(shí)別率更高,具體訓(xùn)練結(jié)果如下:

在這里插入圖片描述在這里插入圖片描述

可視化

“卷積”是一種數(shù)學(xué)運(yùn)算,邏輯上其實(shí)很難理解到它的用處,因此,書上給出了對(duì)卷積作用更加直接的展現(xiàn)方式,以上一部分學(xué)習(xí)前和學(xué)習(xí)后的卷積核為例,各個(gè)卷積核的權(quán)重圖如下:

學(xué)習(xí)前:

在這里插入圖片描述
學(xué)習(xí)后:

在這里插入圖片描述

可以明顯的看到,學(xué)習(xí)前雜亂無(wú)章的權(quán)重矩陣,在學(xué)習(xí)后變得有跡可循,明顯有些區(qū)域的權(quán)重更深一些,那么,這些權(quán)重更大的部分對(duì)應(yīng)的目標(biāo)究竟是什么呢?

書上給出了答案:這些卷積核在學(xué)習(xí)邊緣(顏色變化的分界線)和斑塊(局部的塊狀區(qū)域),例如黑白分界線,可以根據(jù)手寫數(shù)字識(shí)別的例子想象,手寫的數(shù)字是黑色,背景是白色,那么卷積核的目標(biāo)就是使得模型對(duì)黑色的部分更加敏感,權(quán)重更大。

上述的結(jié)果是只進(jìn)行了一次卷積得到的,隨著層次的加深,提取的信息也會(huì)越來(lái)越抽象,在深度學(xué)習(xí)中,最開(kāi)始層會(huì)對(duì)簡(jiǎn)單的邊緣有響應(yīng),接下來(lái)是對(duì)紋理,在接下來(lái)是對(duì)更復(fù)雜的性質(zhì),隨著層次遞增,模型的目標(biāo)會(huì)從簡(jiǎn)單的形狀進(jìn)化到更高級(jí)的信息。

總結(jié)

本章詳細(xì)介紹了CNN的構(gòu)造,對(duì)卷積層、池化層進(jìn)行了從零開(kāi)始的實(shí)現(xiàn),但是對(duì)反向傳播的部分只給出了代碼實(shí)現(xiàn)。最重要的還是對(duì)im2col的理解,明白了im2col的原理,卷積層、池化層乃至反向傳播的實(shí)現(xiàn),這些問(wèn)題就迎刃而解了。

基于最基本的CNN,后續(xù)還有更多功能強(qiáng)大,網(wǎng)絡(luò)結(jié)構(gòu)更深的CNN網(wǎng)絡(luò),如LeNet(激活函數(shù)為sigmod,使用子采樣縮小中間數(shù)據(jù)大小,而不是卷積、池化)還有AlexNet(多個(gè)卷積層和池化層,激活函數(shù)為sigmod,使用進(jìn)行局部正規(guī)化的LRN層,使用Dropout)等。

參考文獻(xiàn)

  1. 【Pytorch實(shí)現(xiàn)】——深入理解im2col(詳細(xì)圖解)
  2. 12張動(dòng)圖幫你看懂卷積神經(jīng)網(wǎng)絡(luò)到底是什么
  3. 《深度學(xué)習(xí)入門——基于Python的理論與實(shí)現(xiàn)》
http://aloenet.com.cn/news/29708.html

相關(guān)文章:

  • 網(wǎng)站內(nèi)容注意事項(xiàng)福州關(guān)鍵詞排名優(yōu)化
  • 鄭州做網(wǎng)站公司msgg平臺(tái)推廣是做什么
  • 網(wǎng)絡(luò)營(yíng)銷的特點(diǎn)主要有哪些seo軟件推薦
  • 律所網(wǎng)站建設(shè)方案書怎么寫怎么找推廣渠道
  • 公眾號(hào)做淘寶客接入手機(jī)網(wǎng)站免費(fèi)私人網(wǎng)站建設(shè)
  • 幫別人做網(wǎng)站必須要開(kāi)公司專門的網(wǎng)頁(yè)制作工具有
  • 查看小程序源碼百度搜索引擎優(yōu)化相關(guān)性評(píng)價(jià)
  • 精仿手表網(wǎng)站超級(jí)推薦的關(guān)鍵詞怎么優(yōu)化
  • 惠州網(wǎng)站設(shè)計(jì)哪家好天津網(wǎng)站制作系統(tǒng)
  • 如何做網(wǎng)站管理引流推廣的句子
  • 哪些網(wǎng)站可以做問(wèn)卷調(diào)查賺錢5g網(wǎng)絡(luò)優(yōu)化培訓(xùn)
  • 網(wǎng)站建設(shè)規(guī)范好的競(jìng)價(jià)托管公司
  • WordPress七牛防盜鏈如何做seo整站優(yōu)化
  • 太倉(cāng)網(wǎng)站建設(shè)網(wǎng)站推廣安陽(yáng)seo
  • 有沒(méi)有什么專業(yè)做美業(yè)的網(wǎng)站網(wǎng)絡(luò)營(yíng)銷是指
  • 北京企業(yè)網(wǎng)站開(kāi)發(fā)費(fèi)用有什么平臺(tái)可以推廣信息
  • 深圳做網(wǎng)站推廣產(chǎn)品關(guān)鍵詞大全
  • 沈陽(yáng)網(wǎng)站建設(shè)公司排名南昌企業(yè)網(wǎng)站建設(shè)
  • 網(wǎng)站源碼設(shè)計(jì)搜索詞分析
  • 鞍山網(wǎng)站建設(shè)公司新聞?lì)^條最新消息摘抄
  • 牡丹江網(wǎng)站seo伊春seo
  • 做公司的網(wǎng)站有哪些東西網(wǎng)絡(luò)營(yíng)銷計(jì)劃書怎么寫
  • 網(wǎng)站建設(shè)背景分析論文網(wǎng)上怎么推銷自己的產(chǎn)品
  • 網(wǎng)站設(shè)計(jì)思想線上營(yíng)銷有哪些
  • 網(wǎng)站設(shè)置反爬蟲的常用方法有哪些中國(guó)輿情網(wǎng)
  • 網(wǎng)站頁(yè)面怎么設(shè)計(jì)seo關(guān)鍵詞優(yōu)化舉例
  • 龍巖特色seo關(guān)鍵詞排名優(yōu)化推薦
  • 廣州網(wǎng)站建設(shè)鞍山站長(zhǎng)之家站長(zhǎng)工具
  • 武漢網(wǎng)站建設(shè)公司排名最好最全的搜索引擎
  • wordpress 圖片縮略圖不顯示圖片抖音seo排名優(yōu)化軟件