Tensorflow 如何在tf.layers模块中使用TensorBoard和summary操作

Tensorflow 如何在tf.layers模块中使用TensorBoard和summary操作,tensorflow,deep-learning,tensorboard,tensorflow-layers,Tensorflow,Deep Learning,Tensorboard,Tensorflow Layers,我遵循了使用TensorFlow的tf.layers模块为MNIST数字分类创建CNN。现在我正试着从中学到如何使用张力板。也许本教程最近没有更新,因为它说它的示例代码是对该教程的示例代码和链接的修改,但代码完全不同:它手动定义了一个完全连接网络的隐藏层 TensorBoard教程演示了如何使用tf.summary将摘要附加到图层,方法是在图层的权重张量上创建操作(因为我们手动定义了图层,所以可以直接访问该张量),并将tf.summary对象附加到这些操作。如果我使用tf.layers及其教程代

我遵循了使用TensorFlow的tf.layers模块为MNIST数字分类创建CNN。现在我正试着从中学到如何使用张力板。也许本教程最近没有更新,因为它说它的示例代码是对该教程的示例代码和链接的修改,但代码完全不同:它手动定义了一个完全连接网络的隐藏层

TensorBoard教程演示了如何使用tf.summary将摘要附加到图层,方法是在图层的权重张量上创建操作(因为我们手动定义了图层,所以可以直接访问该张量),并将tf.summary对象附加到这些操作。如果我使用tf.layers及其教程代码,我相信我必须:

  • 修改图层教程的示例代码,以使用非功能界面(Conv2D而不是Conv2D,稠密而不是稠密)创建图层
  • 使用层对象的可训练_weights()函数获取权重张量,并将tf.summary对象附加到这些张量

  • 这是将TensorBoard与tf.layers一起使用的最佳方式,还是有一种更直接地与tf.layers和功能接口兼容的方式?如果有,是否有更新的官方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)
    
    不确定这是否是最好的方式,但我相信这是做你想做的事情最直接的方式


    希望这有帮助

    你可以用这样的东西

    with tf.name_scope('dense2'):
    
        preds = tf.layers.dense(inputs=dense1,units = 12,  
                        activation=tf.nn.sigmoid, name="dense2")
    
        d2_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, 'dense2')
    
        tf.summary.histogram("weights", d2_vars[0])
        tf.summary.histogram("biases", d2_vars[1])
        tf.summary.histogram("activations", preds)
    

    另一种选择是使用
    tf.layers.Dense
    而不是
    tf.layers.Dense
    d
    d
    之间的区别)

    密集型的范例是:

    x = tf.placeholder(shape=[None, 100])
    dlayer = tf.layers.Dense(hidden_unit)
    y = dlayer(x)
    
    使用
    dlayer
    作为中间层,您可以执行以下操作:

    k = dlayer.kernel
    b = dlayer.bias
    k_and_b = dlayer.weights
    
    请注意,在应用
    y=dlayer(x)
    之前,您不会获得
    dlayer.kernel


    其他层的情况类似,例如卷积层。用任何可用的自动完成功能检查它们。

    这是我在问题中提到的选项,我想看看是否有替代选项。