【问题标题】:Logging LSTM internal gate activations during recurrent timesteps在循环时间步长期间记录 LSTM 内部门激活
【发布时间】:2019-05-31 15:52:20
【问题描述】:

我目前正在使用 keras 中的循环 LSTM 细胞。 为了分析我的网络,我想在时间序列预测期间查看 LSTM 单元中的 i、c、o 和 f 值。

基本上,我想要一个记录张量,它在循环计算期间记录内部 LSTM 单元的值。

我已经尝试简单地打印出这些值,但我认为由于代码仅在编译时运行并且未包含在图表中,因此我没有得到预期的行为。据我了解,TF 的内部张量是 declerativ 并且不会在会话之外保存任何数据。

我还尝试修改完整的 LSTM 类以拥有一个日志变量,但我没有让它工作。我目前滞后于对代码结构的完整了解,无法找到输出这些值的方法。

基本上我想记录这4个值,位于LSTMCell的调用函数中:

i = self.recurrent_activation(x_i + K.dot(h_tm1_i ,self.recurrent_kernel_i))
f = self.recurrent_activation(x_f + K.dot(h_tm1_f,self.recurrent_kernel_f))
c = f * c_tm1 + i * self.activation(x_c + K.dot(h_tm1_c, self.recurrent_kernel_c))
o = self.recurrent_activation(x_o + K.dot(h_tm1_o, self.recurrent_kernel_o)

keras 中是否有一种简单的内置方法,可以在循环/展开计算期间记录内部 LSTM 单元数据?如果没有,最好的方法是什么,从哪里开始?是否有不同的方法或库来添加日志记录功能?

【问题讨论】:

    标签: python tensorflow keras lstm


    【解决方案1】:

    截至目前,我无法在 keras 中实现门激活日志记录。

    我认为在 keras 中实现日志记录的最佳解决方案是将 LSTM 层拆分为两个中间层,并在其间设置一个打印输出层。这涉及实现两个服装层。

    但是,我从基于 keras 的实现切换到了 matlab。 matlab 神经网络实现和结构允许轻松进行代码编辑,并且实现日志功能非常简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多