将大数据集加载/ feed_dicting到Tensorflow会话中

时间:2017-02-21 21:20:59

标签: python-3.x tensorflow computer-vision large-data

我正在尝试为convNet消耗50k图像数据集,比例为tr-60%,test-20%,validate-20%。 到目前为止,我已经创建了一个占位符并将其@sess.run()命名为feed_dicting,如下所示: -

tf_train_dataset = tf.placeholder(
    tf.float32, shape=(batch_size, image_size, image_size, num_channels))
......
...
feed_dict = {tf_train_dataset : batch_data, tf_train_labels : batch_labels}
    _, l, predictions = session.run(
      [optimizer, loss, train_prediction], feed_dict=feed_dict)

但根据官方TF表现指南,这是一种很难实施的方式,如下: - link to TF guide

  

除非是特殊情况或代码,否则请勿进食   数据从Python变量进入会话,例如字典。

# This will result in poor performance.
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

你能帮忙实现在TF中读取数据的队列吗?

我发现的一种方法是: -

  

创建一个以流方式加载数据的操作

但我不确定 1)如果是最好的方式, 2)我无法实现上述建议,您能帮忙创建这个操作伪代码吗? 非常感谢。

1 个答案:

答案 0 :(得分:2)

使用feed_dict提供数据通常是一个坏主意,但您不必总是编写操作来处理数据。您可以将图像数据转换为tensorflow可识别的格式:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/how_tos/reading_data/convert_to_records.py。此过程可以并行进行,您可以输出文件列表,因为tensorflow也可以使用文件列表。

然后按照此页面上的教程在python中创建队列和Feed数据:https://www.tensorflow.org/programmers_guide/reading_data