pytorch中tensor张量数据类型的转化方式

时间:2021-05-23

1.tensor张量与numpy相互转换

tensor ----->numpyimport torcha=torch.ones([2,5])tensor([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]])# ********************************** b=a.numpy()array([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]], dtype=float32)numpy ----->tensorimport numpy as npa=np.ones([2,5])array([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]])# ********************************** b=torch.from_numpy(a)tensor([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]], dtype=torch.float64)

2.tensor张量与list相互转换

tensor—>lista=torch.ones([1,5])tensor([[1., 1., 1., 1., 1.]])# ***********************************b=a.tolist()[[1.0, 1.0, 1.0, 1.0, 1.0]]list—>tensora=list(range(1,6))[1, 2, 3, 4, 5]# **********************************b=torch.tensor(a)tensor([1, 2, 3, 4, 5])

3.tensor张量见类型转换

构建一个新的张量,你要转变成不同的类型只需要根据自己的需求选择即可

tensor = torch.Tensor(3, 5)# torch.long() 将tensor投射为long类型newtensor = tensor.long()# torch.half()将tensor投射为半精度浮点类型newtensor = tensor.half()# torch.int()将该tensor投射为int类型newtensor = tensor.int()# torch.double()将该tensor投射为double类型newtensor = tensor.double()# torch.float()将该tensor投射为float类型newtensor = tensor.float()# torch.char()将该tensor投射为char类型newtensor = tensor.char()# torch.byte()将该tensor投射为byte类型newtensor = tensor.byte()# torch.short()将该tensor投射为short类型newtensor = tensor.short()

4.type_as() 将张量转换成指定类型张量

>>> a=torch.Tensor(2,5)>>> atensor([[1.9431e-19, 4.8613e+30, 1.4603e-19, 2.0704e-19, 4.7429e+30], [1.6530e+19, 1.8254e+31, 1.4607e-19, 6.8801e+16, 1.8370e+25]])>>> b=torch.IntTensor(1,2)>>> btensor([[16843009, 1]], dtype=torch.int32)>>> a.type_as(b)tensor([[ 0, -2147483648, 0, 0, -2147483648], [-2147483648, -2147483648, 0, -2147483648, -2147483648]], dtype=torch.int32)>>> atensor([[1.9431e-19, 4.8613e+30, 1.4603e-19, 2.0704e-19, 4.7429e+30], [1.6530e+19, 1.8254e+31, 1.4607e-19, 6.8801e+16, 1.8370e+25]])

以上这篇pytorch中tensor张量数据类型的转化方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章