我想用Tensorflow來訓練一個卷積網絡。 卷積層的輸入是3 Chaneel彩色圖像和輸出(標籤)是單通道圖像。 我正在使用tfrecord和隊列。下面出隊被稱爲單次訓練批次的兩次
image, labelImage = queue.dequeue_many(BATCH_SIZE)
圖像出列運算給出進入作爲輸入到第一卷積層和labelImage用於計算損失。
conv1 = tf.layers.conv2d(inputs=img,filters=8,kernel_size=5,padding='SAME',activation=tf.nn.relu)
.....
.....
finaldeconv = tf.layers.conv2d_transpose(inputs=deconv2,filters=1,kernel_size=5,strides=(2,2),padding='SAME',activation=tf.nn.relu)
loss = tf.divide(tf.square(tf.subtract(labelImage,finaldeconv)),2)
cost = tf.reduce_mean(loss)
optimiser = tf.train.AdamOptimizer(LEARNING_RATE)
train = optimiser.minimize(cost)
所以,現在當我訓練的內部會議
sess.run(train)
運算調用應該是上面的代碼如下: -
火車運稱損失運算。 損失運算要求labeImage和finaldeconv finaldeconv調用CONV1 CONV1調用圖像
圖像和labelImage兩個呼叫dequeop
我沒有得到CONV層圖像和相應的labelImage計算損失。圖像和LabelImage分別調用deque。我怎樣才能解決這個問題?
一種方法是使用佔位符,並將圖像和labelImage放置到佔位符,但我不想腰部時間複製gpu。我已經在GPU上有隊列了。
首先感謝您的回覆。我想確認我正確理解您的答案。 插入到隊列中的一個訓練示例採用列表格式ex- [image,labelImage]。我有如下創建隊列: - queue = tf.RandomShuffleQueue(capacity = 100,min_after_dequeue = 2,dtypes = [ tf.float32,tf.float32],shapes = [(IMAGE_ROWS,IMAGE_COLS,3),(IMAGE_ROWS,IMAGE_COLS)]) 現在,如果我只是調用sess.run(train),它會只調用一次出隊操作每次迭代? 如果是這樣,image和labelImage是成對的,我的問題將得到解決。 –
是的,你理解正確 – nessuno