91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中如何實現卷積神經網絡

發布時間:2021-06-04 14:40:09 來源:億速云 閱讀:214 作者:小新 欄目:開發技術

這篇文章主要介紹了Python中如何實現卷積神經網絡,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一、卷積神經網絡

Yann LeCun 和Yoshua Bengio在1995年引入了卷積神經網絡,也稱為卷積網絡或CNN。CNN是一種特殊的多層神經網絡,用于處理具有明顯網格狀拓撲的數據。其網絡的基礎基于稱為卷積的數學運算。

卷積神經網絡(CNN)的類型

以下是一些不同類型的CNN:

  • 1D CNN:1D CNN 的輸入和輸出數據是二維的。一維CNN大多用于時間序列。

  • 2D CNNN:2D CNN的輸入和輸出數據是三維的。我們通常將其用于圖像數據問題。

  • 3D CNNN:3D CNN的輸入和輸出數據是四維的。一般在3D圖像上使用3D CNN,例如MRI(磁共振成像),CT掃描(甲CT掃描或計算機斷層掃描(以前稱為計算機軸向斷層或CAT掃描)是一種醫學成像 技術中使用的放射學獲得用于非侵入性詳述的身體的圖像診斷的目的)和其他復雜應用程序的DICOM圖像(醫學數字成像)

二、網絡架構

以下是CNN中不同層的網絡架構:

  • 卷積層

  • 池化層

  • 全連接層

CNN架構的完整概述

Python中如何實現卷積神經網絡

三、卷積

卷積是對名為fg的兩個函數的數學計算,得出第三個函數(f * g)。第三個功能揭示了一個形狀如何被另一個形狀修改。其數學公式如下:

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)

Python中如何實現卷積神經網絡

卷積有幾個非常重要的概念:遮罩。

Python中如何實現卷積神經網絡

圖中的黃色的部分的就是遮罩

四、卷積層

卷積層是CNN的核心構建塊。CNN是具有一些卷積層和其他一些層的神經網絡。卷積層具有幾個進行卷積運算的過濾器。卷積層應用于二維輸入,由于其出色的圖像分類工作性能而非常著名。它們基于具有二維輸入的小核k的離散卷積,并且該輸入可以是另一個卷積層的輸出。

Python中如何實現卷積神經網絡

五、在Keras中構建卷積層

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'))

上面的代碼實現說明:

  • 輸出將具有32個特征圖。

  • 內核大小將為3x3。

  • 輸入形狀為32x32,帶有三個通道。

  • padding = same。這意味著需要相同尺寸的輸出作為輸入。

  • 激活指定激活函數。

接下來,使用不同的參數值構建一個卷積層,如下所示

六、池化層

池化層它的功能是減少參數的數量,并減小網絡中的空間大小。我們可以通過兩種方式實現池化:

  • Max Pooling:表示矩形鄰域內的最大輸出。Average Pooling:表示矩形鄰域的平均輸出

  • Max Pooling和Average Pooling減少了圖像的空間大小,提供了更少的特征和參數以供進一步計算。

Python中如何實現卷積神經網絡

上圖顯示了帶有步幅為2的2X2濾波器的MaxPool池化層。

Python中如何實現卷積神經網絡

在Keras中實現Max Pool層,如下所示:

model.add(MaxPooling2D(pool_size =(2,2)))

七、全連接層

全連接層是確定最終預測的所有輸入和權重的總和,代表最后一個合并層的輸出。它將一層中的每個神經元連接到另一層中的每個神經元

Python中如何實現卷積神經網絡

全連接層的主要職責是進行分類。它與softmax激活函數一起使用以得到結果。

用于多類的激活函數是softmax函數,該函數以0和1(總計為1)的概率對完全連接的層進行規范化。

帶有非線性函數“ Softmax”的Keras代碼如下:

model.add(Dense(10, activation='softmax'))

八、Python實現卷積神經網絡

環境Google Colab

導入所有必需的庫

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數據:

(X, y), (X_test, y_test) = cifar10.load_data()
# 規范化數據
X,X_test = X.astype('float32')/ 255.0,X_test.astype('float32')/ 255.0

轉換為分類:

y,y_test = utils.to_categorical(y,10),u.to_categorical(y_test,10)

初始化模型:

model = Sequential()

使用以下參數添加卷積層:

  • Features map = 32

  • 內核大小= 3x3

  • 輸入形狀= 32x32

  • Channels = 3

  • Padding = 3→表示與輸入相同的尺寸輸出

model.add(Conv2D(32, (3, 3), input_shape=(32, 32, 3), padding='same', activation='relu'))
# Dropout
model.add(Dropout(0.2))
# 添加另一個卷積層 padding ='valid'表示輸出尺寸可以采用任何形式
model.add(Conv2D(32,(3,3),activation ='relu',padding ='valid'))
# 添加一個最大池化層
model.add(MaxPooling2D(pool_size =(2,2)))
# 展平
model.add(Flatten())
# Dense層 隱藏單元數為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個epochs

model.fit(X, y, validation_data=(X_test, y_test), epochs=25,          batch_size=512)

Python中如何實現卷積神經網絡

九、總結

卷積神經網絡是一種特殊的多層神經網絡,主要用于提取特征。CNN使用稱為卷積和池化的兩個操作將圖像縮小為其基本特征,并使用這些特征適當地理解和分類圖像

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python中如何實現卷積神經網絡”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正镶白旗| 沈阳市| 定襄县| 双牌县| 巩义市| 缙云县| 辽中县| 普安县| 饶河县| 太保市| 宜宾县| 乡宁县| 成武县| 大姚县| 玛多县| 奉化市| 汉源县| 康定县| 南皮县| 哈尔滨市| 福泉市| 湘潭市| 临沧市| 正宁县| 宁河县| 汽车| 武山县| 阜新| 广安市| 滨州市| 金乡县| 兴业县| 新余市| 锡林郭勒盟| 朝阳区| 会理县| 南靖县| 彰化市| 云浮市| 余干县| 酒泉市|