import tensorflow as tf B = 3 D = 4 T = 5 tf.reset_default_graph() xs = tf.placeholder(shape=[T, B, D], dtype=tf.float32) with tf.variable_scope("RNN"): GRUcell = tf.contrib.rnn.GRUCell(num_units = D) cell = tf.contrib.rnn.MultiRNNCell([GRUcell]) output_ta = tf.TensorArray(size=T, dtype=tf.float32) input_ta = tf.TensorArray(size=T, dtype=tf.float32) input_ta.unstack(xs) def body(time, output_ta_t, state): xt = input_ta.read(time) new_output, new_state = cell(xt, state) output_ta_t.write(time, new_output) return (time+1, output_ta_t, new_state) def condition(time, output, state): return time < T time = 0 state = cell.zero_state(B, tf.float32) time_final, output_ta_final, state_final = tf.while_loop( cond=condition, body=body, loop_vars=(time, output_ta, state)) output_final = output_ta_final.stack()
And I launched it
x = np.random.normal(size=(T, B, D)) with tf.Session() as sess: tf.global_variables_initializer().run() output_final_, state_final_ = sess.run(fetches = [output_final, state_final], feed_dict = {xs:x})
I would like to understand how to use TensorArray correctly in relation to the TensorFlow while loop. In the above example, I get the following error:
InvalidArgumentError: TensorArray RNN/TensorArray_1_21: Could not read from TensorArray index 0 because it has not yet been written to.
I do not understand that it is "impossible to read from the TensorArray index 0". I think I am writing TensorArray input_ta using unack and output_ta in the tag. What am I doing wrong? Thank you for your help.
while-loop tensorflow
Daniel
source share