【问题标题】:Tensorflow: show or save forget gate values in LSTMTensorflow:在 LSTM 中显示或保存遗忘门值
【发布时间】:2017-01-03 05:28:55
【问题描述】:

我使用的是 tensorflow 中默认提供的 LSTM 模型。我想检查或知道如何在每个步骤中保存或显示遗忘门的值,有没有人这样做过或至少有类似的事情?

到目前为止,我已经尝试使用 tf.print,但出现了许多值(甚至比我预期的还要多)我会尝试使用 tensorboard 绘制一些东西,但我认为这些门只是变量,而不是我可以打印的额外层(也因为它们在 TF 脚本中)

任何帮助都会受到欢迎

【问题讨论】:

    标签: python neural-network tensorflow lstm


    【解决方案1】:

    如果您使用的是 tf.rnn_cell.BasicLSTMCell ,则您要查找的变量的名称中将包含以下后缀:<parent_variable_scope>/BasicLSTMCell/Linear/Matrix 。这是所有四个门的级联矩阵。它的第一个维度匹配输入矩阵和状态矩阵的第二个维度的总和(或者准确地说是单元格的输出)。第二个维度是单元格大小的4倍。

    另一个互补变量是<parent_variable_scope>/BasicLSTMCell/Linear/Bias,它是一个与上述张量的第二维大小相同的向量(原因很明显)。

    您可以沿维度 1 使用 tf.split() 检索四个门的参数。拆分矩阵的顺序为 [input], [new input], [forget], [output]。我指的是rnn_cell.py这里的代码。

    请记住,变量代表 Cell 的参数,而不是各个门的输出。但有了以上信息,我相信你也能得到它,如果你愿意的话。

    编辑:
    添加了有关实际张量 Matrix 和 Bias 的更多具体信息

    【讨论】:

    • 嘿 @JunkMechanic 感谢您的留言,但我是 tensorflow 的新手。你能告诉我如何确定这个范围吗?我正在检查 TF 网页,我刚刚看到我可以执行 tf.getVariable 并且可以将那个与忘记门一起使用,但是我没有看到与变量的任何连接,更多的是我看到了范围的名称和形状...那是我应该使用的吗?
    • 是的。您必须使用tf.getVariable()。我的答案中的<parent_variable_scope> 是您调用单元格的范围(而不仅仅是初始化它)。另请记住,您需要为父变量范围设置标志 reuse_variables 才能检索相同的张量。
    • 查找变量的一种方法是首先使用会话配置中的log_device_placement 标志列出它们。这将使您大致了解变量的命名方式。
    猜你喜欢
    • 2018-06-21
    • 2020-08-01
    • 2017-10-08
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多