You could create a dummy example with small sizes and compute the result manually:
x = torch.randn(1, 2, 2, 2)
conv = nn.Conv2d(2, 1, 1)
output = conv(x)

print(x)
tensor([[[[-0.4150, -0.3450],
          [-0.2987,  1.7142]],

         [[ 1.2817, -0.7830],
          [-0.0724, -1.8714]]]])
print(conv.weight)
> tensor([[[[ 0.6824]],

         [[-0.5454]]]], requires_grad=True)
print(conv.bias)
> tensor([-0.5595], requires_grad=True)
print(output)
> 
tensor([[[[-1.5418, -0.3679],
          [-0.7238,  1.6310]]]], grad_fn=<MkldnnConvolutionBackward>)

# manual calculation for first value
print((-0.415*0.6824) + (1.2817*-0.5454) + (-0.5595))
> -1.5417351799999999

Try to create this small example in the other frameworks and try to check, how the result is calculated.