我对tf.train.slice_input_producer
的工作原理感到困惑,我知道它会返回一个dequeue op,但是如果我在之前的出列张量上应用另一个slice_input_producer
,那么似乎第二个slice_input_producer
被触发了第一个没有完成切片的排队。
以下是一个示例代码:
x = np.arange(6).reshape([2, 3])
input_x = tf.constant(x, dtype=tf.int32)
[row] = tf.train.slice_input_producer([input_x], num_epochs=1, shuffle=False)
[cloumn] = tf.train.slice_input_producer([row], num_epochs=1, shuffle=False)
init_op = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())
sess = tf.Session()
sess.run(init_op)
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)
print(x)
col = sess.run(cloumn)
print(col)
col = sess.run(cloumn)
print(col)
每次评估column
时,我都期待0,1,2,3,4,5。但它给出了0和4,第二个slice_input_producer
没有完成切割第一行。
我该如何解决这个问题?提前谢谢了。