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.00
print(net[1].bias)
print(net[4].bias)