Python中float64转float32失败,求助解决方法
解决Pandas与PyTorch中类型转换不生效的问题
问题根源
Pandas的astype()和PyTorch的to()都不会直接修改原对象,而是返回一个类型转换后的新实例。你没有将转换结果重新赋值给原变量,所以原数据的类型始终保持不变。
修正后的代码
Pandas部分
from torch import nn import torch import pandas as pd import numpy as np df = pd.DataFrame([[1.1, 2.1], [3.1, 4.1],[5.1,6.1]], columns=['col1', 'col2']) # 将转换结果赋值回原df,或赋值给新变量 df = df.astype('float32') print(df.dtypes) # 输出: # col1 float32 # col2 float32 # dtype: object
PyTorch部分
a = torch.tensor(df.loc[1][['col1']]) # 将to()的结果重新赋值给a a = a.to(torch.float32) print(a) # 输出:tensor([3.1000], dtype=torch.float32)
额外优化
如果不想覆盖原DataFrame,可以把转换结果存到新变量:df_float32 = df.astype('float32');PyTorch也支持创建张量时直接指定类型,省去后续转换步骤:
a = torch.tensor(df.loc[1][['col1']].values, dtype=torch.float32) print(a.dtype) # torch.float32
内容的提问来源于stack exchange,提问作者Stocavista
相关产品推荐
相关产品推荐

