在张量板上可视化batch_norm参数

时间:2018-09-07 23:32:36

标签: tensorflow neural-network tensorboard

当我更改批处理规范特定的超参数时,我当前的NN模型给出了一些异常结果。我想查看批处理规范参数 beta gamma 随时间的分布,以确保批处理规范没有做任何奇怪的事情。

可视化学习到的权重或偏差最容易使用张量板完成,但是我不确定如何使用 beta gamma 进行此操作,因为它们已定义和管理在tf.layers.batch_normalizationtf.contrib.layers.batch_norm中。

是否有一种简单的方法来引用 beta gamma 并将它们放入直方图摘要中,而无需编写自己的批处理规范版本?

1 个答案:

答案 0 :(得分:0)

为他们建立摘要仍然很麻烦,但这是我访问gammabeta时想得到的:

def batch_norm(self, x_in):
    with tf.variable_scope('batch_norm'):
        x = tf.layers.batch_normalization(  x_in,
                                            momentum = self.bn_decay,
                                            epsilon = self.bn_epsilon,
                                            training = self.is_training)

        gamma =  tf.trainable_variables(tf.get_variable_scope().name)[0]
        beta = tf.trainable_variables(tf.get_variable_scope().name)[1]

        return x

tf.trainable_variables(tf.get_variable_scope().name)所做的工作是以列表的形式返回当前范围内的所有变量。在这种情况下,有两个变量,第0个是gamma,第一个是beta,但是可能会因实现方式的不同而改变。

如果需要特定名称,请使用:

for var in tf.trainable_variables(tf.get_variable_scope().name):
    print(var.name)