Я пытаюсь понять операции очереди FIFO.
Предположим, у меня есть очередь, определенная глобально:
Q = tf.FIFOQueue(20, dtypes=tf.int32, shapes=[(1, 10)])
И функция, которая ставит в очередь несколько тензоров в очереди
def body():
y = tf.constant([[1, 2]])
y = tf.pad(y, [[0, 0], [0, 10 - tf.shape(y)[1]]], constant_values=4)
Q.enqueue(y)
return True
with tf.Session() as sess:
res = body()
print(sess.run(Q.size()) ===> 0
Я понимаю, что операция enqueue в функции body
не выполняется, поэтому размер очереди не заполняется, и я не уверен, как заставить ее работать, когда функция вызывается как часть другойфрагмент кода, без явной записи sess.run(Q.enqueue(y))
.
Есть связанная проблема здесь , и я также хотел бы иметь возможность выполнять операции постановки в очередь в теле цикла while.
Как мне переписать операционную систему?