最近在学习Pytorch深度学习,自己敲代码时遇到了一些问题。为了避免大家落坑,也为了自己避免再犯错,所以来此处记录一下。内容可能也会有一些疏漏,恳请大家批评指正!
目录
项目场景:
问题描述
原因分析:
解决方案:
训练模型时,常常会需要读取文件数据。利用pandas读取文件数据,用于训练模型。
import pandas as pd
datas = pd.read_csv(filepath)
结果编译器报错:
RuntimeError: expected scalar type Float but found Double
编译器提示:期待标量数据类型Float但是发现了Double
我们通过调用info()方法,查看读取数据框的信息:
print(datas.info())
RangeIndex: 759 entries, 0 to 758
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 f1 759 non-null float64
1 f2 759 non-null float64
2 f3 759 non-null float64
3 f4 759 non-null float64
4 f5 759 non-null float64
5 f6 759 non-null float64
6 f7 759 non-null float64
7 f8 759 non-null float64
8 isAlive 759 non-null int64
dtypes: float64(8), int64(1)
memory usage: 53.5 KB
None
能够看到数据类型为float64,也就是上面说的Double,于是我们尝试改变数据类型。
将Double数据类型转换为Float
可以在读取文件数据时,直接指定数据的类型,例如:
import numpy as np
datas1=pd.read_csv(r'.data/diabetes.csv', dtype=np.float32)
即添加一句:dtype=np.float32
此时再查看数据框信息:
print(datas1.info())
RangeIndex: 759 entries, 0 to 758
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 f1 759 non-null float32
1 f2 759 non-null float32
2 f3 759 non-null float32
3 f4 759 non-null float32
4 f5 759 non-null float32
5 f6 759 non-null float32
6 f7 759 non-null float32
7 f8 759 non-null float32
8 isAlive 759 non-null float32
dtypes: float32(9)
memory usage: 26.8 KB
None
数据类型变为float32,此时运行程序,就成功啦!