Keras - 是不是可以在 Tensorboard 中查看模型的权重和偏差
Posted
技术标签:
【中文标题】Keras - 是不是可以在 Tensorboard 中查看模型的权重和偏差【英文标题】:Keras - is it possible to view the weights and biases of models in TensorboardKeras - 是否可以在 Tensorboard 中查看模型的权重和偏差 【发布时间】:2017-10-07 03:13:06 【问题描述】:我刚刚开始使用 Keras,并构建了一个 Q-learning 示例程序。我创建了一个 tensorboard 回调并将其包含在对 model.fit 的调用中,但 TensorBoard 中出现的唯一内容是损失的标量摘要和网络图。有趣的是,如果我打开图中的密集层,我会看到一个标记为“bias_0”的小摘要图标和一个标记为“kernel_0”的摘要图标,但我没有看到这些图标出现在 TensorBoard 的分布或直方图选项卡中,就像我在我用纯张量流构建了一个模型。
我是否需要做其他事情才能在 Tensorboard 中启用这些功能?我是否需要查看 Keras 生成的模型的详细信息并添加我自己的 tensor_summary() 调用?
【问题讨论】:
this 可能重复。 我对使用 Tensorboard 输出和分析权重感兴趣,而不仅仅是打印出来。也许 .get_weights() 会给我一些可以输入到 Tensorboard 的东西。 【参考方案1】:我对此进行了调试,发现问题是我在调用 fit() 时没有提供任何验证数据。 TensorBoard 回调仅在提供验证数据时报告权重。这似乎有点限制,但我至少有一些可行的方法。
【讨论】:
我认为不应该这样。就我而言,我必须以不同于训练数据的方式处理验证数据,因此我编写了自己的回调来计算验证准确度。所以同样你也可以编写自己的回调。 在我一直使用的Keras版本中(包括2.04),在TensorBoard.on_epoch_end中,第二行是:if self.validation_data and self.histogram_freq:
,所以如果没有提供self.validation_data,则将跳过张量摘要.看起来validation_data 用于生成摘要的model.inputs 和model.targets,但权重也与此混为一谈,即使权重是模型的一部分并且不需要存在验证数据。
即使有验证数据。 Tensorboard 没有显示权重和偏差。您使用的是哪个版本的 Tensorflow?【参考方案2】:
您可以使用.get_weights()
获取每层和整个模型的权重和偏差。
例如,如果您的模型的第一层是密集层,您希望为其设置权重和偏差,您可以通过以下方式获得它们:
weights, biases = model.layers[0].get_weights()
【讨论】:
这可能有点用,但问题是关于 tensorboard,我不认为对 model.layers[i].get_weights() 的调用可能与让 tensorboard 正常工作一样有用.以上是关于Keras - 是不是可以在 Tensorboard 中查看模型的权重和偏差的主要内容,如果未能解决你的问题,请参考以下文章
Keras:SimpleRNN - 如何在每个时间步进入新输入(而不是使用输出)