pytorch快速搭建神經網路_Sequential操作
阿新 • • 發佈:2020-06-17
之前用Class類來搭建神經網路
class Neuro_net(torch.nn.Module): """神經網路""" def __init__(self,n_feature,n_hidden_layer,n_output): super(Neuro_net,self).__init__() self.hidden_layer = torch.nn.Linear(n_feature,n_hidden_layer) self.output_layer = torch.nn.Linear(n_hidden_layer,n_output) def forward(self,input): hidden_out = torch.relu(self.hidden_layer(input)) out = self.output_layer(hidden_out) return out net = Neuro_net(2,10,2) print(net)
class類圖結構:
使用torch.nn.Sequential() 快速搭建神經網路
net = torch.nn.Sequential( torch.nn.Linear(2,10),torch.nn.ReLU(),torch.nn.Linear(10,2) ) print(net)
Sequential圖結構
總結:
我們可以發現,使用torch.nn.Sequential會自動加入激勵函式,但是 class類net 中,激勵函式實際上是在 forward() 功能中才被呼叫的
使用class類中的torch.nn.Module,我們可以根據自己的需求改變傳播過程
如果你需要快速構建或者不需要過多的過程,直接使用torch.nn.Sequential吧
補充知識:【PyTorch神經網路】使用Moudle和Sequential搭建神經網路
Module:
init中定義每個神經層的神經元個數,和神經元層數;
forward是繼承nn.Moudle中函式,來實現前向反饋(加上激勵函式)
# -*- coding: utf-8 -*- # @Time : 2019/11/5 10:43 # @Author : Chen # @File : neural_network_impl.py # @Software: PyCharm import torch import torch.nn.functional as F #data x = torch.unsqueeze(torch.linspace(-1,1,100),dim=1) y = x.pow(2) + 0.2 * torch.rand(x.size()) #第一種搭建方法:Module # 其中,init中定義每個神經層的神經元個數,和神經元層數; # forward是繼承nn.Moudle中函式,來實現前向反饋(加上激勵函式) class Net(torch.nn.Module): def __init__(self): #繼承__init__函式 super(Net,self).__init__() #定義每層的形式 #隱藏層線性輸出feature->hidden self.hidden = torch.nn.Linear(1,10) #輸出層線性輸出hidden->output self.predict = torch.nn.Linear(10,1) #實現所有層的連線關係。正向傳播輸入值,神經網路分析輸出值 def forward(self,x): #x首先在隱藏層經過激勵函式的計算 x = F.relu(self.hidden(x)) #到輸出層給出預測值 x = self.predict(x) return x net = Net() print(net) print('\n\n') #快速搭建:Sequential #模板:net2 = torch.nn.Sequential() net2 = torch.nn.Sequential( torch.nn.Linear(1,1) ) print(net2)
以上這篇pytorch快速搭建神經網路_Sequential操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。