2017-07-24 120 views
1

我想通過在Tensorflow中排隊我的數據(x_data和y_target)來開發隨機批生成。這裏我的代碼:隨機批生成器Tensorflow

x_data=np.asarray(x_data) # shape (2404,60,41,2) 
y_target=np.asarray(y_data) # shape (2404,7) 

queue_x_data = tf.placeholder(tf.float64, shape=[20,60,41,2]) 
queue_y_target = tf.placeholder(tf.int64, shape=[20,7]) 
q = tf.FIFOQueue(capacity=50, dtypes=[tf.float64,tf.int64], shapes=[(60,41,2), (7)]) 
init = q.enqueue_many([queue_x_data, queue_y_target]) 
dequeue_op = q.dequeue() 
data_batch, target_batch = tf.train.shuffle_batch(dequeue_op,batch_size=32,num_threads=4,capacity=50000, min_after_dequeue=10000) 

with tf.Session() as sess: 
    coord = tf.train.Coordinator() 
    threads = tf.train.start_queue_runners(sess=sess, coord=coord) 
    curr_data_batch, curr_target_batch = sess.run([data_batch, target_batch]) 

在這裏,我會嘗試只是打印生成的批處理。

print(curr_data_batch) 
    coord.request_stop() 
    coord.join(threads) 

但我無法得到任何生成的批處理打印。我究竟做錯了什麼?由於

回答

0

有2個原因。

  • 首先,您從未打電話給init操作:sess.run(init, {queue_x_data: x_data, queue_y_target: y_target}))
  • 第二,min_after_dequeue=10000是與隊列中元素的數量進行比較,嘗試將其設置爲較低的級別。
0

您嘗試從佔位符填滿你的隊列,但佔位符必須用數據通過轉移來填充free_dict參數然後調用sess.run()