如何从训练lstm细胞中读取每个特征的权重

时间:2017-05-13 06:18:21

标签: tensorflow

我在TF 1.1.0上使用了几个时间序列作为LSTM模型(回归时输出1)的特征(3个输入特征)。主要功能开始了如下会话:

model = SKCompat(learn.Estimator(model_fn=lstm_model, 
              model_dir=LOG_DIR,
              params={'learning_rate': Learning_rate}))
model.fit(trainX, trainY, steps=steps)

和lstm_model函数主要如下:

lstm_cell = tf.contrib.rnn.LSTMCell(hidden, state_is_tuple=True)
lstm_cell = tf.contrib.rnn.DropoutWrapper(cell=lstm_cell, output_keep_prob=0.1)
(output, state) = tf.nn.dynamic_rnn(cell=lstm_cell, inputs=features, dtype=tf.float32)

训练并保存模型(由默认的tf函数本身自动保存)后,我可以通过' import_meta_graph'来读取LSTM单元格的权重。并且恢复'在主要功能。权重看起来像(131,512)数组。

问题是如何从这样的权重数组中知道每个要素的权重,即每个要素对输出的权重?

顺便说一句,如果你使用默认的tf功能,我可以在训练时保存自定义模型吗?怎么做?非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为权重[131,512]可以这样解释:

由于128个隐藏层,3个功能

  1. D-131变量是3个特征的权重,128个隐藏层(仍然不确定)。
  2. D-512变量是每个隐藏层中输入门,忘记门,单元状态和输出门的权重,4 * 128 = 512。 我是对的吗?