我在互联网上搜索了这个答案,但我似乎无法找到它!
我有一个大型的csv文件(大约14gb,并将在后期使用更大的文件),我想用TFLearn训练模型。我有一个文件准备功能,将测试数据并删除所有不需要的字段。它还将创建两个文件(一个用于培训,一个用于预测:
import tflearn
from tflearn.data_utils import load_csv
train_file, test_file = prep('data/large.csv', remove=[0, 1], test=.2)
data, labels = load_csv(train_file, has_header=False, n_classes=2)
model.fit(data, labels, batch_size=20, validation_set=.1, n_epoch=20)
问题是load_csv - 我遇到了内存问题。 prep部分以块的形式读取large.csv文件并将其附加到train_file,因此这里的内存不是问题。我还尝试将large.csv转换为H5格式并批量保存,以便批量检索数据(在循环中):
with h5py.File('large.h5, 'a') as hf:
hf.create_dataset('batch%d' % (n_batch), data=chunk)
在训练期间:
for n in number_of_batches:
with open h5py.File('large.h5','r') as hf:
b = hf['batch%d' % (n)][:]
# Then I have some code to write the small batch to small.csv.
data, labels = load_csv('small.csv', ...)
model.fit(data, labels, ...)
后一个选项适用于内存,但我在训练模型时表现不佳(每个循环训练1000行)。
我应该使用TensorFlow占位符吗?我不知道如何用TFLearn实现它们。 TFLearn也有一个ImagePreloader,但我没有分类图像。我的数据是在1000多列(长度相等)的csv中。