【问题标题】:single-step simulation in tensorflow RNN张量流 RNN 中的单步模拟
【发布时间】:2016-12-14 14:16:20
【问题描述】:

我正在研究一个 RNN 控制器,它将工厂的当前状态作为 RNN 的输入,并生成输出作为控制信号。执行控制后,更新后的工厂状态作为下一个时间步的输入反馈给 RNN。在这个循环中,输入序列是一步一步堆叠的,而不是预先给定的。 目前,不涉及任何培训。只需要单步前向模拟。 所以我要找一个可以做这个一步RNN输出的tensorflow RNN操作。

input_data = tf.placeholder(tf.float32, [batch_size, len_seq,8])

我定义了两种输入:Input_data 用于batch_size 输入序列,input_single 用于当前时间步的输入。

input_single = tf.placeholder(tf.float32, [1, 1, 8])
action_gradient = tf.placeholder(tf.float32, [batch_size, len_seq, dimAction])
num_hidden = 24    
cell = tf.nn.rnn_cell.LSTMCell(num_hidden, state_is_tuple=True)
state_single = cell.zero_state(batch_size, tf.float32)
(output_single, state_single) = cell(input_single, state_single)
weight = tf.Variable(tf.truncated_normal([num_hidden, dimAction]))
bias = tf.Variable(tf.constant(0.1, shape=[dimAction]))
y_single = tf.nn.tanh(tf.matmul(output_single, weight) + bias)

网络以两种方式被读出:y_single 用于每个时间步,y_seq 用于输入的整个 minibatch。

outputs, states = tf.nn.dynamic_rnn(cell, input_data, dtype=tf.float32)
y_seq = tf.nn.tanh(tf.matmul(outputs, weight) + bias)

【问题讨论】:

  • 是的,我的代码有问题。插入了一些行。我试图将输入变量设为一步输入。使用“input_single”时,会出现 TypeError: 'Variable' object is not iterable。
  • 您需要提供更多代码,input_single 是如何定义的?另外,为什么不使用cell.zero_state(1,tf.float32) 代替state_single
  • @martianwars 输入单被定义为占位符,形状为[1, 1, input_size]。我没有使用cell.zero_state(1,tf.float32) 进行state_single 初始化的原因再次是担心状态不是序列,而是只有一个时间步长。
  • zero_state 不返回序列,它返回大小为 [batch size x state size] 的单个 state
  • 它返回一个batch_size 状态数,指定batch_size 序列数的每个初始状态?

标签: python tensorflow


【解决方案1】:

您只需调用一次tf.rnn.LSTMCell 对象即可实现此目的。确保你提出正确的论点。这样的事情会帮助你,

cell = tf.nn.rnn_cell.LSTMCell(num_hidden, state_is_tuple=True)
input_single = tf.ones([batch_size, input_size])
state_single = cell.zero_state(batch_size, tf.float32)
(output_single, state_single) = cell(input_single, state_single)

如果您有充分的理由不使用cell.zero_state(),请查看RNNCell.__call__() 的文档以获取有关input_singlestate_single 形状的更多详细信息。

【讨论】:

  • 谢谢!我会试试上面的代码。我把更多的代码放在问题框中。希望它能更好地描述我的问题。
  • 接受。太糟糕了,我没有声誉可以投票。
猜你喜欢
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 1970-01-01
  • 2018-03-13
  • 2017-06-12
  • 2017-12-05
相关资源
最近更新 更多