我已经按照 TensorFlow Layers tutorial 使用 TensorFlow 的 tf.layers 模块为 MNIST 数字分类创建了一个 CNN。现在我正在尝试从 TensorBoard: Visualizing Learning 学习如何使用 TensorBoard。也许这个教程最近没有更新,因为它说它的示例代码是对那个教程和链接的修改,但代码完全不同:它手动定义了一个单隐藏层的全连接网络。

TensorBoard 教程展示了如何使用 tf.summary 通过在图层的权重张量上创建操作来将摘要附加到图层,因为我们手动定义了图层,因此可以直接访问,并将 tf.summary 对象附加到这些操作。如果我使用 tf.layers 和它的教程代码,要做到这一点,我相信我必须:

  • 修改图层教程的示例代码以使用非功能接口(interface)(Conv2D 代替 conv2d 和 Dense 代替密集)来创建层
  • 使用层对象的 trainable_weights() 函数获取权重张量并将 tf.summary 对象附加到那些

  • 这是将 TensorBoard 与 tf.layers 一起使用的最佳方式,还是有一种更直接兼容 tf.layers 和功能接口(interface)的方法?如果是这样,是否有更新的官方 TensorBoard 教程?如果文档和教程更加统一,那就太好了。

    最佳答案

    您应该能够使用 tf.layers 调用的输出来获取激活。取链接层教程的第一个卷积层:

    # Convolutional Layer #1
    conv1 = tf.layers.conv2d(
        inputs=input_layer,
        filters=32,
        kernel_size=[5, 5],
        padding="same",
        activation=tf.nn.relu)
    

    你可以这样做:
    tensor_name = conv1.op.name
    tf.summary.histogram(tensor_name + '/activation', conv1)
    

    不确定这是否是最好的方法,但我相信这是做你想做的最直接的方法。

    希望这可以帮助!

    关于tensorflow - 如何在 tf.layers 模块中使用 TensorBoard 和汇总操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49201832/

    10-14 15:38