文章目录
一.层和块
1.如果将MySequential中存储块的方式更改为Python列表,会出现什么样的问题?
这个问题想了很久,也查了。还是没想到合适的。开始想的是会不会产生地址冲突,打了下代码发现也没问题。但是原文的解释现在也不是很懂。
In short the chief advantage of _modules is that during our module’s parameter initialization, the system knows to look inside the _modules dictionary to find sub-modules whose parameters also need to be initialized.
简而言之,_modules的主要优点是: 在模块的参数初始化过程中, 系统知道在_modules字典中查找需要初始化参数的子块。
这个解释的很好
2.实现一个块,它以两个块为参数,例如net1和net2,并返回前向传播中两个网络的串联输出。这也被称为平行块。
class parallel(nn.Module):
def __init__(self, block1, block2):
super().__init__()
self.block1 = block1
self.block2 = block2
def forward(self, X):
one = self.block1(X)
two = self.block2(X)
return torch.cat((one, two))