3.0 神经网络 - PyTorch学习笔记
生活随笔
收集整理的這篇文章主要介紹了
3.0 神经网络 - PyTorch学习笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
神經網絡 (NEURAL NETWORK)
神經網絡可以通過 torch.nn 包來構建
上節課已經學習了 autograd ,nn 是在 autograd 的基礎上定義和區分模型。一個 nn.Module 包含了層,和一個 forward(input) 來返回 output 。
以典型 LetNet-5 網絡舉例:
這是一個簡單的前饋(feed-forward)網絡。具有輸入,將輸入饋送到一層接一層,最后輸出。
結構詳解參考:Fly~~~
一個典型的神經網絡訓練過程包含以下幾個方面:
- 定義神經網絡的學習參數
- 迭代輸入數據
- 通過網絡處理輸入數據
- 計算損失函數,也就是輸出距離整理的距離
- 傳遞梯度反饋到網絡的參數
- 更新網絡的參數,典型更新規則是 weight = weight - learning_rate * gradient
定義網絡 (Define the network)
讓我們定義這個網絡
import torch import torch.nn as nn import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super(Net, self).__init__()# 1 input image channel, 6 output channels, 3x3 square convolution# kernelself.conv1 = nn.Conv2d(1, 6, 3)self.conv2 = nn.Conv2d(6, 16, 3)# an affine operation: y = Wx + bself.fc1 = nn.Linear(16 * 6 * 6, 120) # 6*6 from image dimensionself.fc2 = nn.Linear(120, 84)self.fc3 = nn.Linear(84, 10)def forward(self, x):# Max pooling over a (2, 2) windowx = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))# If the size is a square you can only specify a single numberx = F.max_pool2d(F.relu(self.conv2(x)), 2)x = x.view(-1, self.num_flat_features(x))x = F.relu(self.fc1(x))x = F.relu(self.fc2(x))x = self.fc3(x)return xdef num_flat_features(self, x):size = x.size()[1:] # all dimensions except the batch dimensionnum_features = 1for s in size:num_features *= sreturn num_featuresnet = Net() print(net)輸出:
Net((conv1): Conv2d(1, 6, kernel_size=(3, 3), stride=(1, 1))(conv2): Conv2d(6, 16, kernel_size=(3, 3), stride=(1, 1))(fc1): Linear(in_features=576, out_features=120, bias=True)(fc2): Linear(in_features=120, out_features=84, bias=True)(fc3): Linear(in_features=84, out_features=10, bias=True) )總結
以上是生活随笔為你收集整理的3.0 神经网络 - PyTorch学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.0 自动梯度 - PyTorch学习
- 下一篇: 【AI】人工智能深度学习入门路线