nn.ModuleList()与nn.Sequential()


nn.Sequential用法
将多个模块进行封装

layer = nn.Sequential(nn.Conv2d(in_channels=128, out_channels=64,kernel_size)       

nn.Sequential内部实现了forward功能,可以直接调用
例如:

x = torch.randn(16, 128, 20, 20)
output = layer(x)

nn.ModuleList,它是一个储存不同 module,并自动将每个 module 的 parameters 添加到网络之中的容器。你可以把任意 nn.Module 的子类 (比如 nn.Conv2d, nn.Linear 之类的) 加到这个 list 里面,方法和 Python 自带的 list 一样,无非是 extend,append 等操作。但不同于一般的 list,加入到 nn.ModuleList 里面的 module 是会自动注册到整个网络上的,同时 module 的 parameters 也会自动添加到整个网络中。

layer = nn.ModuleList([nn.Conv2d(in_channels=128, out_channels=64,kernel_size])

nn.ModuleList内部没有forword功能
例如:

报错
x = torch.randn(16, 128, 20, 20)
output = layer(x)
正确
x= torch.randn(16, 128, 20, 20)
for module in layer:
    x= module(x)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM