from_numpy()
automatically inherits input array dtype
. On the other hand, torch.Tensor
is an alias for torch.FloatTensor
.
Therefore, if you pass int64
array to torch.Tensor
, output tensor is float tensor and they wouldn’t share the storage. torch.from_numpy
gives you torch.LongTensor
as expected.
a = np.arange(10)
ft = torch.Tensor(a) # same as torch.FloatTensor
it = torch.from_numpy(a)
a.dtype # == dtype('int64')
ft.dtype # == torch.float32
it.dtype # == torch.int64