Как создать рекуррентную переменную с 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?
Большое спасибо за Вашу помощь!
1 ответ
Когда вы пишете заявление, как
Z = tf.matmul(W, Z)
вы обновляете переменную python Z
а не внутреннее хранилище TensorFlow, связанное с переменной TensorFlow Z
, Пожалуйста, ознакомьтесь с разделом об операциях с состоянием в TensorFlow, чтобы получить представление о том, как TensorFlow управляет состоянием. Чтобы ответить на ваш конкретный вопрос, вы должны использовать tf.assign
операция по обновлению TensorFlow Z
переменная следующим образом:
Z = tf.assign(Z, tf.matmul(W, Z))