Neural network Pytorch resNet在哪里添加值?
我正在ResNet上工作,我发现了一个用加号跳过连接的实现。像下面这样Neural network Pytorch resNet在哪里添加值?,neural-network,deep-learning,pytorch,tensor,resnet,Neural Network,Deep Learning,Pytorch,Tensor,Resnet,我正在ResNet上工作,我发现了一个用加号跳过连接的实现。像下面这样 Class Net(nn.Module): def __init__(self): super(Net, self).__int_() self.conv = nn.Conv2d(128,128) def forward(self, x): out = self.conv(x) // line 1 x = out + x //
Class Net(nn.Module):
def __init__(self):
super(Net, self).__int_()
self.conv = nn.Conv2d(128,128)
def forward(self, x):
out = self.conv(x) // line 1
x = out + x // skip connection // line 2
现在我已经调试并打印了第1行前后的值。结果如下:
在第1行之后x=[1128,32,32]
out=[1128,32,32] 第2行之后
x=[1128,32,32]//仍然 参考链接: 我的问题是它在哪里增加了价值??我是说以后 x=输出+x 操作,增值在哪里
PS:Tensor格式是[批次、通道、高度、宽度]。正如@UmangGupta在评论中提到的,您打印的似乎是您的张量的形状(即
3x3
矩阵的“形状”是[3,3]
),而不是其内容。
在您的例子中,您正在处理1x128x32x32
张量)
希望澄清形状和内容之间差异的示例:
导入火炬
out=火炬1号((3,3))
x=火炬眼(3,3)
res=out+x
打印(输出形状)
#火炬尺寸([3,3])
打印(输出)
#张量([[1,1,1.],
# [ 1., 1., 1.],
# [ 1., 1., 1.]])
打印(x.shape)
#火炬尺寸([3,3])
打印(x)
#张量([[1,0,0.],
# [ 0., 1., 0.],
# [ 0., 0., 1.]])
打印(res.shape)
#火炬尺寸([3,3])
打印(res)
#张量([[2,1,1.],
# [ 1., 2., 1.],
# [ 1., 1., 2.]])
嗨!你能改进一下这个问题吗?i、 你到底想知道什么?为什么加法在这里起作用?当然,如果out是0张量,x的值可以保持不变。然而,你的张量看起来很奇怪。你不确定你指的是张量的大小吗?这看起来像张量的大小而不是张量“这看起来像张量的大小而不是张量!!”你能详细解释一下吗?