Neural network Pytorch 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 //

我正在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    // 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的值可以保持不变。然而,你的张量看起来很奇怪。你不确定你指的是张量的大小吗?这看起来像张量的大小而不是张量“这看起来像张量的大小而不是张量!!”你能详细解释一下吗?