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吗

那有什么问题

请仅对实际答案使用“发布答案”按钮。您应该填写原始问题以添加其他信息。