1. 程式人生 > 程式設計 >pytorch快速搭建神經網路_Sequential操作

pytorch快速搭建神經網路_Sequential操作

之前用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類圖結構:

pytorch快速搭建神經網路_Sequential操作

使用torch.nn.Sequential() 快速搭建神經網路

net = torch.nn.Sequential(
  torch.nn.Linear(2,10),torch.nn.ReLU(),torch.nn.Linear(10,2)
)
print(net)

Sequential圖結構

pytorch快速搭建神經網路_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操作

以上這篇pytorch快速搭建神經網路_Sequential操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。