356 字
2 分钟
容器和模型
容器和模型
深度学习中,需要构建一个深度的网络,来实现需要的功能。
在深度神经网络中,每一层都可以看作一个基础模型。(例如基本的线性模型nn.Linear
)
而深度神经网络需要大量的基础模型构成,为了方便管理这些基础模型,pytorch定义了Container容器类来整合这些基础Module。
当然,Container容器中可以嵌套更多的子容器。
在代码net = nn.Sequential(nn.Relu(), nn.Linear(20, 30), nn.Relu())
中,定义了一个Sequential容器类。
同时还定义了3个Module类,分别是2个Relu层,1个Linear()线性层。
Container()类构建的过程中,实际上是对这些Module的引用,是一种浅拷贝。
我们将一个容器看作一个深度神经网络模型。
容器的操作
以下代码单独创建了一个Linear基础模型、一个Sequential顺序容器。
L1 = nn.Linear(30, 40)net = nn.Sequential(nn.Linear(20, 30), L1, nn.Relu(), nn.Linear(40, 30), L1, nn.Relu());
1. 对于Container中的模型,可以使用索引直接访问模型。
直接访问Sequential容器中的第一个nn.Linear(20, 30)模型。
net[0]
2. 在构建容器的过程中,使用的是模型的引用,类似于浅拷贝。直接修改作为参数的模型参数,会影响到容器中的参数。
修改L1中的参数,会影响到net[1]
,net[4]
中的参数。
L1.bias = 2.00print(net[1].bias)print(net[4].bias)