I think they handle the dimensions differently. If I specify the order of dimensions, then I can get the same results using NumPy and PyTorch, so first taking the norm of dimensions 1, 2 and then the norm of the resulting tensor/array:
>>> np.linalg.norm(np.linalg.norm(var_numpy, axis=(1,2)))
577.3682
>>> torch.norm(torch.norm(var_torch, dim=(1,2)))
tensor(577.3682)

This result is consistent with what NumPy gives without specifying dimensions. However, I don’t know how PyTorch calculates its result tensor(1883.6027):
torch.norm(var_torch)
tensor(1883.6027)

@smth  @ptrblck  Any comment?