Yann LeCun 和Yoshua Bengio在1995年引入了卷積神經(jīng)網(wǎng)絡(luò),也稱為卷積網(wǎng)絡(luò)或CNN。CNN是一種特殊的多層神經(jīng)網(wǎng)絡(luò),用于處理具有明顯網(wǎng)格狀拓?fù)涞臄?shù)據(jù)。其網(wǎng)絡(luò)的基礎(chǔ)基于稱為卷積的數(shù)學(xué)運(yùn)算。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)的類型
以下是一些不同類型的CNN:
以下是CNN中不同層的網(wǎng)絡(luò)架構(gòu):
CNN架構(gòu)的完整概述
卷積是對(duì)名為f
和g
的兩個(gè)函數(shù)的數(shù)學(xué)計(jì)算,得出第三個(gè)函數(shù)(f * g)
。第三個(gè)功能揭示了一個(gè)形狀如何被另一個(gè)形狀修改。其數(shù)學(xué)公式如下:
h ( x , y ) = f ( x , y ) ∗ g ( x , y ) h(x,y)=f(x,y)*g(x,y) h(x,y)=f(x,y)∗g(x,y)
卷積有幾個(gè)非常重要的概念:遮罩。
圖中的黃色的部分的就是遮罩
卷積層是CNN的核心構(gòu)建塊。CNN是具有一些卷積層和其他一些層的神經(jīng)網(wǎng)絡(luò)。卷積層具有幾個(gè)進(jìn)行卷積運(yùn)算的過濾器。卷積層應(yīng)用于二維輸入,由于其出色的圖像分類工作性能而非常著名。它們基于具有二維輸入的小核k的離散卷積,并且該輸入可以是另一個(gè)卷積層的輸出。
from keras.models import Sequential from keras.layers.convolutional import Conv2D model = Sequential() model.add(Conv2D(32, (3, 3), input_shape=(32, 32, 3), padding='same', activation='relu'))
上面的代碼實(shí)現(xiàn)說明:
接下來,使用不同的參數(shù)值構(gòu)建一個(gè)卷積層,如下所示
池化層它的功能是減少參數(shù)的數(shù)量,并減小網(wǎng)絡(luò)中的空間大小。我們可以通過兩種方式實(shí)現(xiàn)池化:
上圖顯示了帶有步幅為2的2X2濾波器的MaxPool池化層。
在Keras中實(shí)現(xiàn)Max Pool層,如下所示:
model.add(MaxPooling2D(pool_size =(2,2)))
全連接層是確定最終預(yù)測的所有輸入和權(quán)重的總和,代表最后一個(gè)合并層的輸出。它將一層中的每個(gè)神經(jīng)元連接到另一層中的每個(gè)神經(jīng)元
全連接層的主要職責(zé)是進(jìn)行分類。它與softmax激活函數(shù)一起使用以得到結(jié)果。
用于多類的激活函數(shù)是softmax函數(shù),該函數(shù)以0和1(總計(jì)為1)的概率對(duì)完全連接的層進(jìn)行規(guī)范化。
帶有非線性函數(shù)“ Softmax”的Keras代碼如下:
model.add(Dense(10, activation='softmax'))
環(huán)境Google Colab
導(dǎo)入所有必需的庫
import numpy as np import pandas as pd from keras.optimizers import SGD from keras.datasets import cifar10 from keras.models import Sequential from keras.utils import np_utils as utils from keras.layers import Dropout, Dense, Flatten from keras.layers.convolutional import Conv2D, MaxPooling2D
加載cifar10數(shù)據(jù):
(X, y), (X_test, y_test) = cifar10.load_data() # 規(guī)范化數(shù)據(jù) X,X_test = X.astype('float32')/ 255.0,X_test.astype('float32')/ 255.0
轉(zhuǎn)換為分類:
y,y_test = utils.to_categorical(y,10),u.to_categorical(y_test,10)
初始化模型:
model = Sequential()
使用以下參數(shù)添加卷積層:
model.add(Conv2D(32, (3, 3), input_shape=(32, 32, 3), padding='same', activation='relu')) # Dropout model.add(Dropout(0.2)) # 添加另一個(gè)卷積層 padding ='valid'表示輸出尺寸可以采用任何形式 model.add(Conv2D(32,(3,3),activation ='relu',padding ='valid')) # 添加一個(gè)最大池化層 model.add(MaxPooling2D(pool_size =(2,2))) # 展平 model.add(Flatten()) # Dense層 隱藏單元數(shù)為521 model.add(Dense(512, activation='relu')) # Dropout model.add(Dropout(0.3)) #output model.add(Dense(10, activation='softmax')) # 編譯模型 激活器選擇SGD model.compile(loss='categorical_crossentropy', optimizer=SGD(momentum=0.5, decay=0.0004), metrics=['accuracy'])
25個(gè)epochs
model.fit(X, y, validation_data=(X_test, y_test), epochs=25, batch_size=512)
卷積神經(jīng)網(wǎng)絡(luò)是一種特殊的多層神經(jīng)網(wǎng)絡(luò),主要用于提取特征。CNN使用稱為卷積和池化的兩個(gè)操作將圖像縮小為其基本特征,并使用這些特征適當(dāng)?shù)乩斫夂头诸悎D像
到此這篇關(guān)于Python深度學(xué)習(xí)之實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:定西 金融催收 寧夏 龍巖 商丘 酒泉 江蘇 云南
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python深度學(xué)習(xí)之實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)》,本文關(guān)鍵詞 Python,深度,學(xué),習(xí)之,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。