本文主要讲解“torch.nn.ModuleList有什么用”,感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你去学习“火炬有什么用”!
简介
模块列表(模块=无)
Holdssubmodulesinalist。
它可以以列表的形式保存多个子模块。
modulelistcanbeindexedlikeragrupityonlist,
但是butmodulesitcontainsareproperlyregistered已注册,
和illbevisiblebyallModulemethods。
模块列表可以像python列表一样进行索引,
并且其中的模块将被正确注册,
并且它保存的module可以被所有的Module方法看到,
之所以不能直接用python列表保存,
因为PyTorch需要自动跟踪计算图,计算自动梯度,
如果使用python列表或python字典直接保存模块,
那么梯度就不能自动正确计算。
参数参数
模块(可迭代,可选)可迭代的模块添加
接受的参数是模块模块的迭代类型,用于添加到模块列表中。
附加(模块)方法
appendsagivenmoduletotheendofthelist。
因素
模块(nn。模块)-模块追加
用于将模块添加到列表的末尾。
扩展(模块)方法
appendsmodules from apythonetrablettendofthelist。
从python可迭代对象向列表中添加多个模块
参数参数
模块(可迭代)iterable of modulestoappend
模块的迭代对象
插入(索引,模块)方法
insertagivenmodulebeforegivenindexintlist。
因素
index(int)indexto insert。
模块(nn。模块)-模块插入
这个方法将一个模块演示代码:插入到ModuleList中的指定位置,就像python普通列表一样。
classMyModule(nn。module): def _ _ init _ _(self): super(my module,self)。_ _ init _ _()self . lineas=nn。ModuleList([nn。线性(10,10)for iinlang(10)])def forward(self,x)3360 # modulelistantasanizable,orbeindexedusing intsfori,lineenumerate (self。lineas)3360 x=self。线性[I//2] (x) l (x)
子模块必须放在顶级属性中,而不是列表或字典中。
因为如果它不在顶层,而是在列表或字典中,
那么优化器就不能准确定位这些子模块,
因此,不可能优化和更新这些模块的参数。
如果您需要一个列表或字典来存储您的子模块,
然后需要使用pytorch提供的方法,即nn。ModuleList和nn.moduldict。
注意:
子模块子模块必须在顶级属性中,不能存储在列表或字典中。
否则,优化器无法准确定位这些学习参数,从而无法正确优化参数。
如果有必要,我们可以使用nn。pytorch提供的模块列表。
还有nn。模块旨在实现列表和字典的功能。至此,相信大家对“torch . nn . moduleist有什么用”有了更深的理解,让我们一起来实践吧!这是网站。更多相关内容,可以去相关渠道查询,关注我们,继续学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154125.html