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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第八讲,nn模型

發(fā)布時間:2024/3/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第八讲,nn模型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一,torch.nn組成和屬性

nn模塊組成

nn.Module的屬性

nn.Module的特點和注意點:

  • 一個module可以包含多個子module
  • 一個module相當(dāng)于一個運算,必須實現(xiàn)forward()函數(shù)
  • 每個module都有8個字典管理他的屬性

二,模型的容器,裝有子module

nn.Sequential:按順序包裝多個網(wǎng)絡(luò)層

  • 順序性
  • 自帶forward()–》自動通過for循環(huán)依次執(zhí)行前向傳播運算
import torch import torchvision import torch.nn as nn from collections import OrderedDictclass LeNetSequential(nn.Module):def __init__(self, classes):super(LeNetSequential, self).__init__()self.features = nn.Sequential(nn.Conv2d(3, 6, 5),nn.ReLU(),nn.MaxPool2d(kernel_size=2, stride=2),nn.Conv2d(6, 16, 5),nn.ReLU(),nn.MaxPool2d(kernel_size=2, stride=2),)self.classifier = nn.Sequential(nn.Linear(16*5*5, 120),nn.ReLU(),nn.Linear(120, 84),nn.ReLU(),nn.Linear(84, classes),)def forward(self, x):x = self.features(x)x = x.view(x.size()[0], -1)x = self.classifier(x)return xclass LeNetSequentialOrderDict(nn.Module):def __init__(self, classes):super(LeNetSequentialOrderDict, self).__init__()self.features = nn.Sequential(OrderedDict({ #通過有序字典對網(wǎng)絡(luò)中的操作進行命名,這樣可以很容易的索引到'conv1': nn.Conv2d(3, 6, 5),'relu1': nn.ReLU(inplace=True),'pool1': nn.MaxPool2d(kernel_size=2, stride=2),'conv2': nn.Conv2d(6, 16, 5),'relu2': nn.ReLU(inplace=True),'pool2': nn.MaxPool2d(kernel_size=2, stride=2),}))self.classifier = nn.Sequential(OrderedDict({'fc1': nn.Linear(16*5*5, 120),'relu3': nn.ReLU(),'fc2': nn.Linear(120, 84),'relu4': nn.ReLU(inplace=True),'fc3': nn.Linear(84, classes),}))def forward(self, x):x = self.features(x)x = x.view(x.size()[0], -1)x = self.classifier(x)return xnet = LeNetSequential(classes=2) net = LeNetSequentialOrderDict(classes=2)fake_img = torch.randn((4, 3, 32, 32), dtype=torch.float32)#4張3通道大小為32*32output = net(fake_img)print(net) print(output)

nn.ModuleList:像Python的list一樣包裝多個網(wǎng)絡(luò)層

  • append():在ModuleList后面添加網(wǎng)絡(luò)層
  • extend():拼接兩個ModuleList
  • insert():指定在ModuleList中位置插入網(wǎng)絡(luò)層
import torch import torchvision import torch.nn as nn from collections import OrderedDictclass ModuleList(nn.Module):def __init__(self):super(ModuleList, self).__init__()self.linears = nn.ModuleList([nn.Linear(10, 10) for i in range(20)])#20個全連接層,每一個是10個神經(jīng)元def forward(self, x):for i, linear in enumerate(self.linears):x = linear(x)return xnet = ModuleList()print(net)fake_data = torch.ones((10, 10))output = net(fake_data)print(output)

nn.ModuleDict:像Python的dict一樣包裝多個網(wǎng)絡(luò)層

  • clear():清空ModuleDict
  • items():返回可迭代的鍵值對
  • keys():返回鍵
  • values():返回值
  • pop():返回一對鍵值,并從字典中刪除
import torch import torchvision import torch.nn as nn from collections import OrderedDictclass ModuleDict(nn.Module):def __init__(self):super(ModuleDict, self).__init__()self.choices = nn.ModuleDict({'conv': nn.Conv2d(10, 10, 3),'pool': nn.MaxPool2d(3)})self.activations = nn.ModuleDict({'relu': nn.ReLU(),'prelu': nn.PReLU()})def forward(self, x, choice, act):x = self.choices[choice](x)x = self.activations[act](x)return xnet = ModuleDict()fake_img = torch.randn((4, 10, 32, 32))output = net(fake_img, 'conv', 'relu')print(output)

三,常用nn網(wǎng)絡(luò)層

nn.Conv2d():二維卷積

  • in_channels:輸入通道數(shù)
  • out_channels:輸出通道數(shù)
  • kernel_size:卷積核尺寸
  • stride:步長
  • padding:填充個數(shù)
  • dilation:空洞卷積大小
  • groups:分組卷積設(shè)置
  • bias:偏置

nn.ConvTranspose2d:轉(zhuǎn)置卷積,實現(xiàn)上采樣

  • in_channels:輸入通道數(shù)
  • out_channels:輸出通道數(shù)
  • kernel_size:卷積核尺寸
  • stride:步長
  • padding:填充個數(shù)
  • dilation:空洞卷積大小
  • groups:分組卷積設(shè)置
  • bias:偏置

nn.MaxPool2d:二維最大池化

  • kernel_size:池化核尺寸
  • stride:步長
  • padding:填充個數(shù)
  • dilation:池化核間隔大小
  • ceil_mode:尺寸向上取整
  • return_indices:記錄池化像素索引(取出最大值時當(dāng)時最大的值所處的位置索引)

nn.AvgPool2d:二維平均池化

  • kernel_size:池化核尺寸
  • stride:步長
  • padding:填充個數(shù)
  • dilation:池化核間隔大小
  • ceil_mode:尺寸向上取整
  • count_include_pad:填充值用于計算
  • divisor_override:除法因子–》當(dāng)設(shè)置了除法因子之后,全部權(quán)值加和之后不除以權(quán)值個數(shù)而除以因子

nn.MaxUnpool2d:反池化—》對二維圖像進行最大池化上采樣

  • kernel_size:池化核尺寸
  • stride:步長
  • padding:填充個數(shù)
  • 需將正常池化以后記錄的索引值傳入反池化函數(shù)

nn.Linear:線性層—》對一維信號進行線性組合

  • in_features:輸入節(jié)點數(shù)
  • out_features:輸出節(jié)點數(shù)
  • bias:是否需要偏置

總結(jié)

以上是生活随笔為你收集整理的第八讲,nn模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久久久久久久久久国产 | 人妻一区二区视频 | 久草福利资源在线观看 | 香蕉久久夜色精品 | 天天插天天狠天天透 | 一区二区三区在线观看免费 | 无码人妻熟妇av又粗又大 | 伊人春色影院 | 日韩乱码在线观看 | 一区二区三区天堂 | 黄色片在线 | 国产性生活 | 免费黄片毛片 | 国产chinesehd精品 | 国产午夜无码精品免费看奶水 | 日产电影一区二区三区 | 日韩欧美一区二区三区在线 | 操操操网 | 免费萌白酱国产一区二区三区 | 美女扒开大腿让男人桶 | 色资源在线观看 | 青青青视频免费观看 | 人妻少妇精品无码专区二区 | 亚洲大片免费看 | 少妇太爽了 | 中文字幕无产乱码 | 欧洲av在线播放 | 牛牛影视免费观看 | 国产中文字字幕乱码无限 | 午夜激情在线观看 | 国产精品美女久久久久久久 | 激情内射亚洲一区二区三区爱妻 | 久久久久这里只有精品 | av资源新版在线天堂 | 欧美乱码精品一区二区 | 草草影院地址 | 尹人香蕉 | 午夜男人影院 | av色图在线 | 亚洲一级av无码毛片精品 | 欧美一区二区三区四区视频 | 91黄色小网站 | 欧美一二区 | 6080一级片 | 国产成人精品无码高潮 | 狠狠躁夜夜躁av无码中文幕 | 日本免费一区视频 | 人人澡人人爱 | 国产精品污网站 | 一二三区在线视频 | 日本成人毛片 | 日日日日干 | 丁香婷婷激情五月 | 激情视频激情小说 | 韩日av一区二区 | 亚洲自拍偷拍在线 | 视频一区二区在线 | 精品蜜桃av | 婷婷六月丁| 中文精品在线观看 | 瑟瑟在线视频 | www.av在线播放 | 一本色道久久亚洲综合精品蜜桃 | h亚洲| 婷婷久久五月 | 国内精久久久久久久久久人 | 日本精品少妇 | 91丝袜一区二区三区 | 国产综合网站 | 国产成人精品无码免费看在线 | 日韩精品久久久 | 亚洲天天做| 国产在线xx | 91涩漫成人官网入口 | 激情宗合| 国产日韩欧美亚洲 | av色站| 成人国产精品久久久 | 日韩精品久久久久久久酒店 | 自拍偷拍日韩精品 | 国产高潮在线观看 | 天天干天天操天天拍 | 国产一卡二卡在线播放 | 女大学生的家政保姆初体验 | 999在线视频 | 伊人久久中文 | 不卡视频一区二区三区 | 日本在线视频中文字幕 | 涩涩视频免费在线观看 | 精品乱码一区二区三四区视频 | 国产精品久久久久久久久久久免费看 | 日韩经典一区 | 最新av在线网址 | 日本三级少妇 | 精品国产精品 | av手机观看| 久久综合资源 | 午夜羞羞影院 | 仙踪林久久久久久久999 |