对于我的项目,我有大量的数据,大约60GB分散在npy文件中,每个文件大小约为1GB,每个文件包含约750k条记录和标签。每个记录是345个float32,而标签是5个float32。
我阅读了tensorflow数据集文档和队列/线程文档,但我无法确定如何最好地处理训练输入,以及如何保存未来预测的模型和权重。
我的模型非常简单,它看起来像这样:
我阅读了tensorflow数据集文档和队列/线程文档,但我无法确定如何最好地处理训练输入,以及如何保存未来预测的模型和权重。
我的模型非常简单,它看起来像这样:
x = tf.placeholder(tf.float32, [None, 345], name='x')
y = tf.placeholder(tf.float32, [None, 5], name='y')
wi, bi = weight_and_bias(345, 2048)
hidden_fc = tf.nn.sigmoid(tf.matmul(x, wi) + bi)
wo, bo = weight_and_bias(2048, 5)
out_fc = tf.nn.sigmoid(tf.matmul(hidden_fc, wo) + bo)
loss = tf.reduce_mean(tf.squared_difference(y, out_fc))
train_op = tf.train.AdamOptimizer().minimize(loss)
我训练神经网络的方式是以随机顺序逐个读取文件,然后使用打乱后的numpy数组来索引每个文件,并手动创建每个批次以使用feed_dict喂给train_op
。从我阅读的所有内容来看,这种方法非常低效,应该用数据集或队列和线程来替换,但正如我所说,文档没有帮助。那么,处理大量数据的最佳方式是什么呢?此外,作为参考,我的数据保存在一个numpy文件中,需要进行两个操作步骤。with open('datafile1.npy', 'wb') as fp:
np.save(data, fp)
np.save(labels, fp)
Dataset
API)。 - kww