第3周:進階主題
Day 15-16: 卷積神經(jīng)網(wǎng)絡(luò)(CNN)
在這兩天中,我專注于學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)(CNN)的基礎(chǔ)知識,包括卷積層和池化層的工作原理以及它們在圖像處理中的應(yīng)用。
卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ):
卷積層:學(xué)習(xí)了卷積層如何通過濾波器(或稱為核)提取圖像的特征。每個濾波器負責(zé)捕捉圖像中的不同特征。
激活函數(shù):理解了ReLU(Rectified Linear Unit)作為激活函數(shù)在CNN中的廣泛應(yīng)用,用于增加非線性。
池化層:了解了池化層(尤其是最大池化)如何幫助減少參數(shù)數(shù)量并防止過擬合,同時保留重要特征。
實踐構(gòu)建CNN:
設(shè)計并實現(xiàn)了一個簡單的CNN模型,用于處理圖像數(shù)據(jù)。
模型包括卷積層、激活函數(shù)、池化層以及全連接層來進行分類。
PyTorch實現(xiàn):
在PyTorch中,我使用torch.nn模塊定義了CNN的各個組件。
實現(xiàn)了一個包含卷積層、ReLU激活和最大池化層的簡單網(wǎng)絡(luò)。
下面是一個簡單的CNN模型的PyTorch實現(xiàn)示例:
import torch
import torch.nn as nn
import torch.optim as optim
定義一個簡單的CNN
class SimpleCNN(nn.Module):
def init(self):
super(SimpleCNN, self).init()
self.conv1 = nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1)
self.relu = nn.ReLU()
self.maxpool = nn.MaxPool2d(kernel_size=2, stride=2)
self.fc = nn.Linear(32 * 14 * 14, 10) # 假設(shè)輸入圖像大小為28x28
def forward(self, x):
x = self.conv1(x)
x = self.relu(x)
x = self.maxpool(x)
x = x.view(-1, 32 * 14 * 14) # 展平操作
x = self.fc(x)
return x
實例化模型、定義損失函數(shù)和優(yōu)化器
model = SimpleCNN()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)、
TensorFlow實現(xiàn)
在TensorFlow中,我們將使用Keras API來構(gòu)建相似的CNN結(jié)構(gòu)。這個例子同樣包含卷積層、ReLU激活函數(shù)、池化層和一個全連接層。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
定義一個簡單的CNN
model = Sequential([
Conv2D(32, kernel_size=(3, 3), strides=(1, 1), padding=‘same’, activation=‘relu’, input_shape=(28, 28, 1)),
MaxPooling2D(pool_size=(2, 2), strides=(2, 2)),
Flatten(),
Dense(10, activation=‘softmax’)
])
編譯模型
model.compile(optimizer=‘a(chǎn)dam’,
loss=‘sparse_categorical_crossentropy’,
metrics=[‘a(chǎn)ccuracy’])
模型概要
model.summary()
在這個TensorFlow實現(xiàn)中,我們使用了Sequential模型來順序地添加層。這種方法使得模型的構(gòu)建過程更加直觀和簡潔。Conv2D和MaxPooling2D分別對應(yīng)于PyTorch中的nn.Conv2d和nn.MaxPool2d。Flatten層用于將卷積層的輸出展平,以便輸入到全連接層(Dense層)。文章來源:http://www.zghlxwxcb.cn/news/detail-807945.html
通過對比PyTorch和TensorFlow的實現(xiàn),可以看出兩個框架在構(gòu)建CNN方面的異同,這有助于更深入地理解這些概念,并在不同框架間轉(zhuǎn)換思維方式。文章來源地址http://www.zghlxwxcb.cn/news/detail-807945.html
到了這里,關(guān)于Pytorch 與 Tensorflow對比學(xué)習(xí) 第3周:進階主題 Day 15-16: 卷積神經(jīng)網(wǎng)絡(luò)(CNN)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!