如何在TensorFlow中使用图像列表作为CNN的输入?

时间:2017-05-10 15:52:51

标签: python image list tensorflow

我是TensorFlow的新手,我在使用列表作为CNN的输入时遇到了问题。

假设我有4个列表:

  • TrainingImage:这是一个包含我想要训练的所有图像的列表,每个图像我都是BGR频道,所以我使用TrainingImage.append(I)将图像I放到此列表中。
  • TrainingLabel:这是在TrainingImage中标记图片的列表,每行都是一个热门矢量。例如,如果我有3个对象(1,2,3),每个对象有2个图像(这意味着TrainingImage有3 x 2 = 6个图像),那么我有一个标签列表,如:1,0, 0; 1,0,0; 0,1,0; 0,1,0; 0,0,1; 0,0,1
  • TestingImage:包含所有待测图片的列表,类似于TrainingImage但图像较少。
  • TestingLabel:所有标签为TestingImage
  • 的列表

我不知道如何在TensorFlow中将其用作CNN的输入。我使用下面的代码,每个图像的大小为68 x 68 x 3,我有17个对象,每个对象我有64个图像用于训练,16个图像用于测试。

  

使用tf.Session()作为sess:

data_initializer = tf.placeholder(tf.float32,
                                  (1088, 68, 68, 3))
label_initializer = tf.placeholder(tf.float32,
                                   (1088, 17))
input_data = tf.Variable(data_initializer, trainable=False, collections=[])
input_labels = tf.Variable(label_initializer, trainable=False, collections=[])

sess.run(input_data.initializer, feed_dict={data_initializer: TrainingImage})
sess.run(input_labels.initializer, feed_dict={label_initializer: TrainingLabel})

所以现在input_datainput_labels是CNN的新输入,但我不确定这是正确的方法吗?我按照此TensorFlow指令https://www.tensorflow.org/programmers_guide/reading_data#preloaded_data使用上述代码,将4个列表视为变量。

1 个答案:

答案 0 :(得分:0)

是的,那会起作用。我可以建议而不是

data_initializer = tf.placeholder(tf.float32,(1088, 68, 68, 3))

你使用

data_initializer = tf.placeholder(tf.float32,(None, 68, 68, 3))

这将允许您发送不同数量的图像,而不是总是发送1088图像。在某些时候你想要处理一个图像。