2017-05-10 19 views
0

我是TensorFlow的新手,使用列表作爲CNN輸入時遇到問題。如何在TensorFlow中使用圖像列表作爲CNN的輸入?

讓說,我有4個表:

  • TrainingImage:這是有,我要培養的所有圖像的列表,每個圖像我是BGR渠道,,所以我把圖像我到這個列表通過使用TrainingImage.append(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使用它作爲inputd的CNN。我使用以下代碼,每個圖像的大小爲68 x 68 x 3,我有17個對象,每個對象有64個用於訓練的圖像,16個用於測試的圖像。

with tf.Session() as 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個列表當作變量。

+0

你可以嘗試將圖像列表轉換爲numpy數組嗎? a = [1,2]; a = np.asarray(a) – hars

回答

0

是的,這將工作。我可能會建議,而不是

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

您使用

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

這將讓你在不同量的圖像,而不是總是具有1088倍的圖像發送的發送。在某些時候,您只想處理1張圖片。

+0

謝謝,但是當我更改爲None時,會發生此錯誤ValueError:initial_value必須具有指定的形狀:張量(「Placeholder_4:0」,shape =(?,68,68,3), dtype = float32) –

+0

嘗試更改*「input_data = tf.Variable(data_initializer,trainable = False,collections = [])」* to ** input_data = tf.Variable(tf.zeros([None,68,68,3] ,dtype = tf.float32),trainable = False,collections = [])**,和類似的input_labels – Wontonimo

相關問題