如果标题中的术语奇怪或不正确,我深表歉意,我尝试参考以下场景:
作为一个最小的例子,我定义一个网络如下:
class Convolution_Layers(nn.Module):
def __init__(self, in, out, kernel):
super(Convolution_Layers, self).__init__()
self.conv2d = nn.Conv2d(in_channels=in, out_channels=out, kernel_size=kernel)
self.conv2d_layers = nn.Sequential(
self.conv2d,
nn.ReLU,
)
forward(self,x):
return self.conv2d_layers(x)
class Network_Model(nn.Module):
def __init__(self):
super(Network_Model, self).__init__()
self.basic_conv = Convolution_layers(1,1,3)
self.subnetwk_1 = nn.ModuleList().append([self.basic_conv])
self.subnetwk_2 = nn.ModuleList().append([self.basic_conv])
def forward(self,x1,x2):
out1, out2 = x1, x2
for l in self.subnetwk_1:
out1 = l(x1)
for l in self.subnetwk_2:
out2 = l(x2)
return out1,out2
我想知道这是否会导致子网 1 和 2 中的权重被共享,因为它们来自同一卷积层实例。
理想情况下,我希望权重是分开的,但只能创建一次基本卷积块,然后在其他地方重复使用它。可能有更好的方法来实现这一点。