如何使用 TensorFlow 创建循环变量

How to create a recurrent variable with TensorFlow

这听起来超级简单,但我在互联网上找不到任何信息。我可能缺乏一些基本的了解。

我想做一些简单的事情:循环变量。说:

Z(t) = W * Z(t-1)

有一些固定的(但可训练的)W

我试过类似的东西:

initializer = tf.random_uniform_initializer(0., 1.)
with tf.variable_scope('recurrent', initializer=initializer):
    Z = tf.get_variable('Z', shape=[...])
Z = tf.matmul(W, Z)

当然,在一个会话中,如果我执行 Z.eval(),它会给出 Z 的连贯值,但 Z 本身不会更新。

因此我的问题是:如何创建一个循环变量,当 运行 使用 TensorFlow 的图形时得到更新?

非常感谢您的帮助!

当你写这样的语句时

Z = tf.matmul(W, Z)

您正在更新 python 变量 Z 而不是与 TensorFlow 变量 Z 关联的 TensorFlow 内部存储。请查看有关 TensorFlow 中有状态操作的 section,以了解 TensorFlow 如何管理状态。要回答您的具体问题,您必须使用 tf.assign 操作来更新 TensorFlow 的 Z 变量,如下所示:

Z = tf.assign(Z, tf.matmul(W, Z))