Tensorflow 如何实现如下所示的时间序列
Tensorflow 如何实现如下所示的时间序列,tensorflow,lstm,Tensorflow,Lstm,ST(空间变换)有两个输入。第一个是Fi,它是固定的。另一个是M,它根据最后一个LSTM的输出而变化。LTSM的输入取决于ST的输出和最后一个LSTM的状态 最简单的方法可能是编写自己的RNN单元。另一种方法是使用tf.raw\n。签出或此。实际上,我实现了以下网络: def build_model(self): lstm_cell = tf.contrib.rnn.BasicLSTMCell( num_units=self.config.num_lstm_unit
ST(空间变换)有两个输入。第一个是Fi,它是固定的。另一个是M,它根据最后一个LSTM的输出而变化。LTSM的输入取决于ST的输出和最后一个LSTM的状态 最简单的方法可能是编写自己的RNN单元。另一种方法是使用
tf.raw\n
。签出或此。实际上,我实现了以下网络:
def build_model(self):
lstm_cell = tf.contrib.rnn.BasicLSTMCell(
num_units=self.config.num_lstm_units, state_is_tuple=True, reuse=True)
if self.mode == "train":
lstm_cell = tf.contrib.rnn.DropoutWrapper(
lstm_cell,
input_keep_prob=self.config.lstm_dropout_keep_prob,
output_keep_prob=self.config.lstm_dropout_keep_prob)
with tf.variable_scope("lstm", initializer=self.initializer) as lstm_scope:
zero_state = lstm_cell.zero_state(
batch_size=self.image_embeddings.get_shape()[0], dtype=tf.float32)
K = 5
C = 80
scores = tf.Variable(tf.random_normal(shape=[K, self.config.batch_size, C]), name="scores")
M = tf.Variable(tf.random_normal(shape=[K+1, self.config.batch_size, 2, 3]), name="M")
tf.assign(M[0], tf.convert_to_tensor([[1., 0., 0.], [0., 1., 0.]]))
lstm_input_size = 14
zk_size = 4096
hidden = zero_state
for k in range(0, K+1):
# Allow the LSTM variables to be reused.
if k > 0:
lstm_scope.reuse_variables()
f_k = spatial_transformer_network.spatial_transformer_network(self.image_embeddings, M[k])
f_k = tf.nn.max_pool(f_k, [1,2,2,1], [1,1,1,1], padding='VALID')
f_k = tf.layers.dense(tf.reshape(f_k, [self.config.batch_size, int(lstm_input_size * lstm_input_size / 4 * 512)]), 4096)
lstm_outputs, hidden = lstm_cell(f_k, hidden)
z_k = tf.layers.dense(hidden[0], zk_size, activation=tf.nn.relu)
if k != 0:
tf.assign(scores[k - 1], (tf.layers.dense(z_k, C)))
if k != K:
tf.assign(M[k + 1], (tf.reshape(tf.layers.dense(z_k, 6), [self.config.batch_size, 2, 3])))
tf.assign(M[k + 1, :, 0, 1], (tf.convert_to_tensor(0.)))
tf.assign(M[k + 1, :, 1, 0], (tf.convert_to_tensor(0.)))
但当它运行到
lstm_outputs, hidden = lstm_cell(f_k, hidden).
错误信息为:
ValueError:变量lstm/basiclstm_cell/kernel不存在,或者不是使用tf.get_Variable()创建的。您的意思是在VarScope中设置reuse=tf.AUTO_reuse吗
那有什么问题 请仅对实际答案使用“发布答案”按钮。您应该填写原始问题以添加其他信息。