Loading

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)
posted @ 2021-03-04 19:45  Guang'Jun  阅读(2352)  评论(0编辑  收藏  举报