上网找的一个代码是这么写的:nn.ModuleList([nn.linear for i in range(10)])
我以为nn.linear是正常的呢!
没想到直接报错module’ object has no attributes ‘linear’
这里还是要注意大小写的
import torch
import torch.nn as nn
import torch.nn.functional as F
import numpy as np
class MyModel(nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.linears = nn.ModuleList([nn.Linear(128,128) for i in range(10)])
# ModuleList can act as an iterable, or be indexed using ints
def forward(self, x):
for i, l in enumerate(self.linears):
x = self.linears[i](x)
return x
输出网络:
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
t = MyModel().to(device)
print(t)
代码输出:
MyModel(
(linears): ModuleList(
(0): Linear(in_features=128, out_features=128, bias=True)
(1): Linear(in_features=128, out_features=128, bias=True)
(2): Linear(in_features=128, out_features=128, bias=True)
(3): Linear(in_features=128, out_features=128, bias=True)
(4): Linear(in_features=128, out_features=128, bias=True)
(5): Linear(in_features=128, out_features=128, bias=True)
(6): Linear(in_features=128, out_features=128, bias=True)
(7): Linear(in_features=128, out_features=128, bias=True)
(8): Linear(in_features=128, out_features=128, bias=True)
(9): Linear(in_features=128, out_features=128, bias=True)
)
)