是否可以使用DOMException: play() failed because the user didn't interact with the document
first.
在tf.TensorArray's
的正文中进行读写,但是 not 不能全部通过tf.while_loop
? >
我想将loop_vars
用作WaveNet声音生成图的一部分,WaveNet声音生成是一种顺序生成机制,可以根据先前生成的幅度窗口生成下一个振幅值。但是,我只想在推断过程中使用它,因此不需要渐变,因此会使用tf.while_loop
进行调用。
除此之外,循环back_prop=False
函数必须读取和写入必须在各个时间步中记住的中间值。
看来body
是以此方式读取和写入值的唯一选项,但是我注意到tf.TensorArray
返回了一个新的tf.TensorArray.write()
,它是由正文返回的并在tf.TensorArray
参数中使用。这是最好的方法吗?
如果我不需要渐变,是否有更简单的方法来保存循环中的状态?
答案 0 :(得分:0)
您可以在tf.while
中使用tf.assign在全局变量中分配内容。
编辑:您不能使用tf.assign
来分配tf.Tensor
的切片索引,但是tf.Variable
可以使用它。发送到while主体的参数的类型为tf.Tensor
,而不是tf.Variable
,因此它将不起作用。
这是一些示例代码。
import tensorflow as tf
x = tf.Variable([0,0])
assign_op = tf.assign(x[1],42)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(x)) # [0,0]
sess.run(assign_op)
print(sess.run(x)) # [0,42]