gpt4 book ai didi

machine-learning - 为什么 torch.nn.Conv2d 在 '(n, n)' 和 'n' 参数之间有不同的结果?

转载 作者:行者123 更新时间:2023-12-05 01:58:35 29 4
gpt4 key购买 nike

input = torch.randn(8, 3, 50, 100)

m = nn.Conv2d(3, 3, kernel_size=(3, 3), padding=(1, 1))
m2 = nn.Conv2d(3, 3, kernel_size=3, padding=1)

output = m(input)
output2 = m2(input)

torch.equal(output, output2) >> False

我想上面的 m 和 m2 Conv2d 应该有完全相同的输出值但实际上不是,这是什么原因?

最佳答案

你已经用相同的设置初始化了两个 nn.Conv2d,没错。然而,权重的初始化是随机完成的!这里有两个不同的层 mm2。即 m.weightm2.weigth 有不同的组件,同样适用于 m.biasm2.bias .

获得相同结果的一种方法是复制模型的基础参数:

>>> m.weight = m2.weight
>>> m.bias = m2.bias

这当然会导致 torch.equal(m(input), m2(input))True

关于machine-learning - 为什么 torch.nn.Conv2d 在 '(n, n)' 和 'n' 参数之间有不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68511961/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com