torch.nn.conv2d提供的结果与torch.nn.functional.conv2d

问题描述 投票:0回答:1

这是我的代码:

l1 = nn.Conv2d(3, 2, kernel_size=3, stride=2).double() #Layer
l1wt = l1.weight.data #filter
inputs = np.random.rand(3, 3, 5, 5) #input
it = torch.from_numpy(inputs) #input tensor
output1 = l1(it) #output
output2 = torch.nn.functional.conv2d(it, l1wt, stride=2) #output
print(output1)
print(output2)

我希望输出1和输出2获得相同的结果,但事实并非如此。我做错什么了吗?nn和nn.functional工作是否不同?

python pytorch convolution
1个回答
0
投票

我认为您忘记了偏见。

inp = torch.rand(3,3,5,5)
a = nn.Conv2d(3,2,3,stride=2)
a(inp)
nn.functional.conv2d(inp, a.weight.data, bias=a.bias.data)

对我也一样

© www.soinside.com 2019 - 2024. All rights reserved.