numpy和torch数据类型转化
在实际计算过程中,float类型使用最多,因此这里只介绍numpy和torch数据float类型转化,其他类型同理。
numpy数据类型转化
- numpy使用astype转化数据类型,float默认转化为64位,可以使用
np.float32
指定为32位
1 | #numpy转化float类型 |
[1. 2. 3.]
float64
- 不要使用a.dtype指定数据类型,会使数据丢失
1 | #numpy转化float类型 |
[1.e-45 3.e-45 4.e-45]
float32
- 不要用float代替np.float,否则可能出现意想不到的错误
- 不能从np.float64位转化np.float32,会报错
- np.float64与np.float32相乘,结果为np.float64
在实际使用过程中,可以指定为np.float,也可以指定具体的位数,如np.float,不过直接指定np.float更方便。
torch数据类型转化
- torch使用
torch.float()
转化数据类型,float默认转化为32位,torch中没有torch.float64()
这个方法
1 | # torch转化float类型 |
torch.float32
np.float64
使用torch.from_numpy
转化为torch后也是64位的
1 | print(a.dtype) |
float64
torch.float64
- 不要用float代替torch.float,否则可能出现意想不到的错误
- torch.float32与torch.float64数据类型相乘会出错,因此相乘的时候注意指定或转化数据float具体类型
np和torch数据类型转化大体原理一样,只有相乘的时候,torch.float不一致不可相乘,np.float不一致可以相乘,并且转化为np.float64