nn.Module类是所有网络结构层次的父类。
当你要实现一个自己的层的时候,必须要继承这个类。
作用:
1.nn.sequential()用作容器Container
Sequential 允许我们构建序列化的模块。就把Sequential当作list来看。nn.sequential(), 一个有序的容器,神经网络模块将按照在传入构造器的顺序依次被添加到计算图中执行。
Sequential 允许我们构建序列化的模块,也就是说用了Sequential的好处是我们可以通过数字访问第几层,可以通过parameters、weights等参数显示网络的参数和权重
使用和不使用nn.Sequential()的对比
不使用
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
# xw+b
self.fc1 = nn.Linear(28*28, 256)
self.fc2 = nn.Linear(256, 64)
self.fc3 = nn.Linear(64, 10)
def forward(self, x):
# x: [b, 1, 28, 28]
# h1 = relu(xw1+b1)
x = F.relu(self.fc1(x))
# h2 = relu(h1w2+b2)
x = F.relu(self.fc2(x))
# h3 = h2w3+b3
x = self.fc3(x)
return x
使用
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc = nn.Sequential(
nn.Linear(28*28, 256)
nn.Relu()
nn.Linear(256, 64)
nn.Relu()
nn.Linear(64, 10)
)
def forward(self, x):
# x: [b, 1, 28, 28]
# h1 = relu(xw1+b1)
x = self.fc(x)
return x