1

内置的 LSTM 单元为您提供了一个可调用的。但是,我想在 LSTM 层之前和之后添加静态层,并通过反向传播训练所有内容。那可能吗?

4

1 回答 1

3

单元格callable是一个函数,它将输入tf.Tensor和当前状态作为 a tf.Tensor,并返回一个输出tf.Tensor和新状态作为 a tf.Tensor。输入/输出和状态张量没有什么特别之处:它们可以从其他 TensorFlow 操作中计算和/或用作其他操作的输入。

例如,查看ptb_word_lm.py模型:

for time_step in range(num_steps):
  # ...
  (cell_output, state) = cell(inputs[:, time_step, :], state)
  outputs.append(cell_output)

这里,inputs是一个 3-D 张量,从中获取切片以获取 LSTM 的一个单元的输入,最初使用 计算,然后state每次后续迭代都使用前一次迭代的状态。cell.zero_state()

张量inputs是运算的结果tf.nn.embedding_lookup();该outputs列表稍后被连接并用作损失计算的输入。TensorFlow 通过 RNN 将损失从损失中反向传播,并将嵌入查找返回到模型变量。

于 2016-03-26T22:12:16.137 回答