【发布时间】:2019-07-18 10:42:07
【问题描述】:
我想训练一个模型,并且我有一个用于训练的大型数据集。 它的大小超过20GB。 但是当我尝试阅读它时,它花了很长时间。 我的意思是把它加载到内存中。
with open(file_path, newline='', encoding='utf-8') as f:
reader = csv.reader(f)
for i,row in enumerate(islice(reader,0,1)):
train_data = np.array(makefloat(row))[None,:]
for i,row in enumerate(reader):
train_data = np.vstack((train_data,np.array(makefloat(row))[None,:]))
每行有 43 个浮点数。
花了这么长时间,我只测试了 100,000 行,用了 20 分钟。
我认为我做错了。我怎样才能让它更快?
【问题讨论】:
-
您可能不想将整个文件读入内存。尝试加载批量数据。如果您使用 Tensorflow 或 Keras 进行训练,您可能可以设置一个适当的数据管道来为您处理它。
-
重复
vstack这样很慢。最好在列表中收集行,并在最后做一个vstack。 -
pandas csv 阅读器比 numpy 阅读器更快(
loadtxt和genfromtxt)。
标签: python numpy keras io bigdata