搭建pytorch神經網絡的常用兩種方式


'''本節說明搭建pytorch神經網絡的常用兩種方式 相比快速搭建法 第一種可以個性化設置網絡結構'''
import torch
import torch.nn.functional as F 
#方式1 用 class 繼承了一個 torch 中的神經網絡結構, 然后對其進行了修改
class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()
        self.hidden = torch.nn.Linear(n_feature, n_hidden)
        self.predict = torch.nn.Linear(n_hidden, n_output)

    def forward(self, x):
        x = F.relu(self.hidden(x))
        x = self.predict(x)
        return x
net1=Net(1,10,1)
#方式2 快速搭建模型
net2 = torch.nn.Sequential(
    torch.nn.Linear(1, 10),
    torch.nn.ReLU(),
    torch.nn.Linear(10, 1)
)
#我們再對比一下兩者的結構:
print(net1)
'''Net(
  (hidden): Linear(in_features=1, out_features=10, bias=True)
  (predict): Linear(in_features=10, out_features=1, bias=True)
)'''
print(net2)
'''Sequential(
  (0): Linear(in_features=1, out_features=10, bias=True)
  (1): ReLU()
  (2): Linear(in_features=10, out_features=1, bias=True)
)'''
'''結論:我們會發現 net2 多顯示了一些內容, 這是為什么呢? 
原來他把激勵函數也一同納入進去了, 但是 net1 中, 
激勵函數實際上是在 forward() 功能中才被調用的. 
這也就說明了, 相比 net2, net1 的好處就是, 
你可以根據你的個人需要更加個性化你自己的前向傳播過程, 比如(RNN).'''

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM