numpy array / pytorch tensor 数据类型转换

  1. array str 转 int
b = a.astype(int)
  1. numpy 转 tensor
a = numpy.array([1, 2, 3])
t = torch.from_numpy(a)
print(t)

#tensor([ 1,  2,  3])

3.tensor float 转long

import torch

a = torch.rand(3,3)
print(a)

b = a.long()
print(b)

# tensor([[0.1139, 0.3460, 0.4478],
#         [0.0205, 0.9585, 0.0103],
#         [0.2299, 0.5627, 0.1236]])
# tensor([[0, 0, 0],
#         [0, 0, 0],
#         [0, 0, 0]])

tensor传cuda再转long

import torch

a = torch.rand(3,3)
print(a)

b = a.type(torch.cuda.LongTensor)
print(b)

#tensor([[0.6625, 0.0186, 0.0780],
#         [0.3266, 0.0136, 0.3116],
#         [0.8770, 0.2193, 0.1572]])
# tensor([[0, 0, 0],
#         [0, 0, 0],
#         [0, 0, 0]], device='cuda:0')

tensor数据类型转换

torch.long() 将tensor转换为long类型

torch.half() 将tensor转换为半精度浮点类型

torch.int() 将该tensor转换为int类型

torch.double() 将该tensor转换为double类型

torch.float() 将该tensor转换为float类型

torch.char() 将该tensor转换为char类型

torch.byte() 将该tensor转换为byte类型

torch.short() 将该tensor转换为short类型
  1. b转换成和a一样的类型
import torch

a = torch.Tensor(2, 3)
b = a.long()
c = a.type_as(b)

print(a)
print(b)
print(c)

# tensor([[5.5168e+15, 0.0000e+00, 8.4078e-45],
#         [0.0000e+00, 1.4013e-45, 0.0000e+00]])
# tensor([[5516833952104448,                0,                0],
#         [               0,                0,                0]])
# tensor([[5516833952104448,                0,                0],
#         [               0,                0,                0]])

你可能感兴趣的:(Python,/,Pytorch,/TensorFlow,numpy,pytorch,python)