如何从训练 LSTM 单元中读取每个特征的权重



我在 TF 1.1.0 上使用多个时间序列作为特征(3 个特征作为输入(到 LSTM 模型(回归时有 1 个输出(。main 函数启动了一个会话,如下所示:

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 函数,我可以在训练时保存自定义模型吗?怎么办?多谢。

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

由于有 128 个隐藏层,3 个特征

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

最新更新