2016-05-07 3 views
0

Это может быть очень просто, но я не могу найти ответ. Я пытаюсь использовать тензор внутри «тела» tf.while_loop. Чтобы это было просто, я просто передаю (3,4) форменный тензор «x» в нем и пока что ничего не делает внутри функции «тело». Но кажется, что принятие этого аргумента вызывает некоторые проблемы. Трассировка стека просто сообщает «AssertionError:». Пожалуйста помоги. Код:AssertionError in Tensorflow while_loop

import tensorflow as tf 
import numpy as np 

def cond(sequence_len, step, x): 
    return tf.less(step,sequence_len) 

def body(sequence_len, step, x): 
    return (sequence_len, step+1) 

step = tf.constant(0) 
sequence_len = tf.constant(10) 
x = tf.zeros([3, 4], tf.int32) 
res,step = tf.while_loop(cond,body,[sequence_len, step, x]) 

with tf.Session() as sess: 
    sess.run(tf.initialize_all_variables()) 
    step_eval = step.eval(session=sess) 

print(step_eval) 

Полный трассировки стека также вставили ниже. The image of the stack trace

ответ

0

tf.while_loop() Вы должны убедиться, что тело() является вызываемым принимает список тензоров и возвращает список тензоров одинаковой длины и с же типов в качестве входных данных. Так работает While_loop. Каждый возврат возвращается в качестве входного аргумента. То есть предыдущий возврат является входным параметром следующей итерации.

Смежные вопросы