關(guān)于pytorch中全連接神經(jīng)網(wǎng)絡(luò)搭建兩種模式詳解
pytorch搭建神經(jīng)網(wǎng)絡(luò)是很簡單明了的,這里介紹兩種自己常用的搭建模式:
import torch import torch.nn as nn
first:
class NN(nn.Module): def __init__(self): super(NN,self).__init__() self.model=nn.Sequential( nn.Linear(30,40), nn.ReLU(), nn.Linear(40,60), nn.Tanh(), nn.Linear(60,10), nn.Softmax() ) self.model[0].weight.data.uniform_(-3e-3, 3e-3) self.model[0].bias.data.uniform(-1,1) def forward(self,states): return self.model(states)
這一種是將整個網(wǎng)絡(luò)寫在一個Sequential中,網(wǎng)絡(luò)參數(shù)設(shè)置可以在網(wǎng)絡(luò)搭建好后單獨(dú)設(shè)置:self.model[0].weight.data.uniform_(-3e-3,3e-3),這是設(shè)置第一個linear的權(quán)重是(-3e-3,3e-3)之間的均勻分布,bias是-1至1之間的均勻分布。
second:
class NN1(nn.Module): def __init__(self): super(NN1,self).__init__() self.Linear1=nn.Linear(30,40) self.Linear1.weight.data.fill_(-0.1) #self.Linear1.weight.data.uniform_(-3e-3,3e-3) self.Linear1.bias.data.fill_(-0.1) self.layer1=nn.Sequential(self.Linear1,nn.ReLU()) self.Linear2=nn.Linear(40,60) self.layer2=nn.Sequential(self.Linear2,nn.Tanh()) self.Linear3=nn.Linear(60,10) self.layer3=nn.Sequential(self.Linear3,nn.Softmax()) def forward(self,states): return self.model(states)
網(wǎng)絡(luò)參數(shù)的設(shè)置可以在定義完線性層之后直接設(shè)置如這里對于第一個線性層是這樣設(shè)置:self.Linear1.weight.data.fill_(-0.1),self.Linear1.bias.data.fill_(-0.1)。
你可以看一下這樣定義完的參數(shù)的效果:
Net=NN() print("0:",Net.model[0]) print("weight:",type(Net.model[0].weight)) print("weight:",type(Net.model[0].weight.data)) print("bias",Net.model[0].bias.data) print('1:',Net.model[1]) #print("weight:",Net.model[1].weight.data) print('2:',Net.model[2]) print('3:',Net.model[3]) #print(Net.model[-1]) Net1=NN1()
print(Net1.Linear1.weight.data)
輸出:
0: Linear (30 -> 40) weight: <class 'torch.nn.parameter.Parameter'> weight: <class 'torch.FloatTensor'> bias -0.6287 -0.6573 -0.0452 0.9594 -0.7477 0.1363 -0.1594 -0.1586 0.0360 0.7375 0.2501 -0.1371 0.8359 -0.9684 -0.3886 0.7200 -0.3906 0.4911 0.8081 -0.5449 0.9872 0.2004 0.0969 -0.9712 0.0873 0.4562 -0.4857 -0.6013 0.1651 0.3315 -0.7033 -0.7440 0.6487 0.9802 -0.5977 0.3245 0.7563 0.5596 0.2303 -0.3836 [torch.FloatTensor of size 40] 1: ReLU () 2: Linear (40 -> 60) 3: Tanh () -0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000 ... ⋱ ... -0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000 [torch.FloatTensor of size 40x30] Process finished with exit code 0
這里要注意self.Linear1.weight的類型是網(wǎng)絡(luò)的parameter。而self.Linear1.weight.data是FloatTensor。
以上這篇關(guān)于pytorch中全連接神經(jīng)網(wǎng)絡(luò)搭建兩種模式詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)定時精度可調(diào)節(jié)的定時器
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)定時精度可調(diào)節(jié)的定時器,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04Python實(shí)例之wxpython中Frame使用方法
本文介紹下wxpython中Frame的用法,不錯的python編程實(shí)例,有需要的朋友參考下2014-06-06pygame實(shí)現(xiàn)井字棋之第一步繪制九宮格
這篇文章主要介紹了pygame實(shí)現(xiàn)井字棋之第一步繪制九宮格,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-05-05python3.5 tkinter實(shí)現(xiàn)頁面跳轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了python3.5 tkinter實(shí)現(xiàn)頁面跳轉(zhuǎn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01關(guān)于Python turtle庫使用時坐標(biāo)的確定方法
這篇文章主要介紹了關(guān)于Python turtle庫使用時坐標(biāo)的確定方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03python中Pyqt5使用Qlabel標(biāo)簽進(jìn)行視頻播放
這篇文章主要介紹了python中Pyqt5使用Qlabel實(shí)現(xiàn)標(biāo)簽進(jìn)行視頻播放,QLabel是界面中的標(biāo)簽類,繼承自QFrame類,提供文本和圖像的顯示,是一種展示控件,下文相關(guān)內(nèi)容介紹需要的小伙伴可以參考一下2022-04-04centos6.5安裝python3.7.1之后無法使用pip的解決方案
今天小編就為大家分享一篇關(guān)于centos6.5安裝python3.7.1之后無法使用pip的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02