日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pytorch —— nn.Module类(nn.sequential)

發布時間:2024/3/12 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch —— nn.Module类(nn.sequential) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? 對于前面的線性回歸模型、 Logistic回歸模型和神經網絡,我們在構建的時候定義了需要的參數。這對于比較小的模型是可行的,但是對于大的模型,比如100 層的神經網絡,這個時候再去手動定義參數就顯得非常麻煩,所以 PyTorch 提供了兩個模塊來幫助我們構建模型,一個是Sequential,一個是 Module。

nn.Module

? ? ? nn.Module類是所有網絡結構層次的父類。

? ? ? 當你要實現一個自己的層的時候,必須要繼承這個類。

? ? ? 而當我們使用一些現有的層,比如說線性層、卷積層的時候,它其實也是繼承自nn.Module,只不過這個類因為使用的非常廣泛 ,所以pytorch官方已經寫好了

? ? ? 當我們自己實現類的話,必須繼承自nn.Module,并且在init中完成初始化的步驟和forward中完成計算圖的前向構建的過程


?

every layer is nn.Module

pytorch實現了大部分的layer,這些layer都繼承于nn.Module

  • nn.conv2d卷積層
  • AvgPool,Maxpool,AdaptiveAvgPool
  • TransposeConv逆卷積
  • nn.Linear全連接層
  • nn.BatchNorm1d(1d,2d,3d)
  • nn.dropout
  • nn.ReLU
  • nn.Sequential

? ? ? 使用這些層非常方便,我們只需要調用一些初始化函數,然后再調用.call方法來調用其forward函數就可以使用它的一些功能

nn.sequential()用作容器Container

? ? ? Sequential 允許我們構建序列化的模塊。就把Sequential當作list來看

? ? ? nn.sequential(), 一個有序的容器,神經網絡模塊將按照在傳入構造器的順序依次被添加到計算圖中執行

? ? ? keras中也有類似的類,tensorflow中沒有


nn.sequential()本身也是一個nn.Module類

? ? ? Sequential 允許我們構建序列化的模塊,也就是說用了Sequential的好處是我們可以通過數字訪問第幾層,可以通過parameters、weights等參數顯示網絡的參數和權重

使用和不使用nn.Sequential()的對比

不使用

class Net(nn.Module):def __init__(self):super(Net, self).__init__()# xw+bself.fc1 = nn.Linear(28*28, 256)self.fc2 = nn.Linear(256, 64)self.fc3 = nn.Linear(64, 10)def forward(self, x):# x: [b, 1, 28, 28]# h1 = relu(xw1+b1)x = F.relu(self.fc1(x))# h2 = relu(h1w2+b2)x = F.relu(self.fc2(x))# h3 = h2w3+b3x = self.fc3(x)return x

使用

class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.fc = nn.Sequential(nn.Linear(28*28, 256)nn.Relu()nn.Linear(256, 64)nn.Relu()nn.Linear(64, 10))def forward(self, x):# x: [b, 1, 28, 28]# h1 = relu(xw1+b1)x = self.fc(x)return x

Sequential的三種寫法

net1 = nn.Sequential() net1.add_module('conv', nn.Conv2d(3, 3, 3)) net1.add_module('batchnorm', nn.BatchNorm2d(3)) net1.add_module('activation_layer', nn.ReLU()) net2 = nn.Sequential(nn.Conv2d(3, 3, 3),nn.BatchNorm2d(3),nn.ReLU()) from collections import OrderedDict net3= nn.Sequential(OrderedDict([('conv1', nn.Conv2d(3, 3, 3)),('bn1', nn.BatchNorm2d(3)),('relu1', nn.ReLU())]))

3、parameter管理

使用nn.Module的話,它就會對你神經網絡的內部參數進行一個有效的管理

4、modules管理

直系子節點叫children

所有的節點加載一個叫modules

總結

以上是生活随笔為你收集整理的Pytorch —— nn.Module类(nn.sequential)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。