Pytorch resNet 在哪里增值?

Pytorch Where Does resNet add values?

我正在研究 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 行前后的值。输出如下:

after line 1
x = [1,128,32,32]
out = [1,128,32,32]

After line 2
x = [1,128,32,32] // still

参考link:https://github.com/kuangliu/pytorch-cifar/blob/bf78d3b8b358c4be7a25f9f9438c842d837801fd/models/resnet.py#L62

我的问题是它在哪里增加了价值??我是说

之后

x = out + x

操作,哪里加值了?

PS: Tensor格式为[batch, channel, height, width].

正如@UmangGupta 在评论中提到的,您正在打印的似乎是张量的形状(即 3x3 矩阵的 "shape" 是 [3, 3]),而不是他们的内容。 在您的情况下,您正在处理 1x128x32x32 张量)。

希望澄清形状和内容之间差异的示例:

import torch

out = torch.ones((3, 3))
x = torch.eye(3, 3)
res = out + x

print(out.shape)
# torch.Size([3, 3])
print(out)
# tensor([[ 1.,  1.,  1.],
#         [ 1.,  1.,  1.],
#         [ 1.,  1.,  1.]])
print(x.shape)
# torch.Size([3, 3])
print(x)
# tensor([[ 1.,  0.,  0.],
#         [ 0.,  1.,  0.],
#         [ 0.,  0.,  1.]])
print(res.shape)
# torch.Size([3, 3])
print(res)
# tensor([[ 2.,  1.,  1.],
#         [ 1.,  2.,  1.],
#         [ 1.,  1.,  2.]])