Quiero tener un bucle for que el número de sus iteraciones depende de un valor de tensor. Por ejemplo:
for i in tf.range(input_placeholder[1,1]): # do something
Sin embargo me sale el siguiente error:
“TypeError: el objeto ‘Tensor’ no es iterable”
¿Qué tengo que hacer?
Para hacer esto, necesitará usar el tensorflow while loop ( tf.while_loop
) de la siguiente manera:
i = tf.constant(0) while_condition = lambda i: tf.less(i, input_placeholder[1, 1]) def body(i): # do something here which you want to do in your loop # increment i return [tf.add(i, 1)] # do the loop: r = tf.while_loop(while_condition, body, [i])
El tipo del valor de retorno de las funciones de la API de TensorFlow Python, incluido tf.range
es un Tensor
. Un Tensor
es un identificador simbólico de nodo en un gráfico que representa el cálculo. Usted realiza el cálculo real llamando al método eval
en un Tensor
, o pasando el objeto para run
método de una Session
. En su caso, tal vez lo que pretendía hacer era simplemente iterar sobre el range
numpy
.
for in in np.range(...): # do something