日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【深度学习】越来越卷,教你使用Python实现卷积神经网络(CNN)

發布時間:2025/3/12 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【深度学习】越来越卷,教你使用Python实现卷积神经网络(CNN) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@Author:Runsen

https://blog.csdn.net/weixin_44510615/article/details/117409037

卷積神經網絡

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架構的完整概述

卷積

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

卷積方程

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

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

卷積層

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

帶濾波器的卷積層

在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減少了圖像的空間大小,提供了更少的特征和參數以供進一步計算。

池化層中的輸入和輸出矩陣

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

Max Pooling和Average Pooling的區別

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

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

全連接層

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

全連接層的主要職責是進行分類。它與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)

總結

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

往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件

本站qq群955171419,加入微信群請掃碼:

總結

以上是生活随笔為你收集整理的【深度学习】越来越卷,教你使用Python实现卷积神经网络(CNN)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。