【发布时间】:2017-10-08 14:31:39
【问题描述】:
我将 TensorFlow LSTM 用于语言模型(我有一个单词序列并想预测下一个单词),并且在运行语言模型时,我想打印出忘记的值,每一步的输入,变换和输出门。我该怎么做?
通过检查https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/rnn/python/ops/rnn_cell.py 中的代码,我看到LayerNormBasicLSTMCell 类有一个call 方法,其中包含我要打印出来的i, j, f, o 变量。
def call(self, inputs, state):
"""LSTM cell with layer normalization and recurrent dropout."""
c, h = state
args = array_ops.concat([inputs, h], 1)
concat = self._linear(args)
i, j, f, o = array_ops.split(value=concat, num_or_size_splits=4, axis=1)
if self._layer_norm:
i = self._norm(i, "input")
j = self._norm(j, "transform")
f = self._norm(f, "forget")
o = self._norm(o, "output")
g = self._activation(j)
if (not isinstance(self._keep_prob, float)) or self._keep_prob < 1:
g = nn_ops.dropout(g, self._keep_prob, seed=self._seed)
new_c = (c * math_ops.sigmoid(f + self._forget_bias)
+ math_ops.sigmoid(i) * g)
if self._layer_norm:
new_c = self._norm(new_c, "state")
new_h = self._activation(new_c) * math_ops.sigmoid(o)
new_state = core_rnn_cell.LSTMStateTuple(new_c, new_h)
return new_h, new_state
但是,有没有一种简单的方法可以打印出这些变量?或者我是否必须在运行 LTSM 的脚本中重新创建此方法中的相关代码行?
【问题讨论】:
标签: python tensorflow lstm