如何放置tf.层变量tf.name_作用域/tf.可变范围?

2024-04-25 17:59:03 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我最近一直在和Tensorflow打交道,并开始使用更高级的Layers API。但这给我带来了一个问题。在

以下代码为卷积块生成正确的(ish)图:

def conv_layer(self, inputs, filter_size = 3, num_filters = 256, name = None):
    scope_name = name
    if name == None:
        scope_name = "conv_layer"

    with tf.name_scope(scope_name):
        conv = tf.contrib.layers.conv2d(inputs, num_filters, filter_size, activation_fn = None)
        batch_norm = tf.contrib.layers.batch_norm(conv)
        act = tf.nn.leaky_relu(batch_norm)

        return act

问题是tf.层API生成一些丑陋的变量,这些变量实际上并不在name_范围内。这是张量板视图,这样你就能明白我的意思了。在

Tensorboard

有没有办法让这些变量进入作用域?这是一个很大的问题,当谈到可视化的图形,因为我计划这个网络更大。(如右图所示,这已经是一个大问题,每次启动Tensorboard时,我都必须手动从主图形中删除这些内容。)

提前感谢:)

编辑-解决方案/解决方案

variable_scope更改name_scope的每个实例,问题已被忽略。但是,我必须为每个variable_scope分配一个唯一的ID并设置reuse = False。在

^{pr2}$

如您所见,变量被很好地隐藏在正确的块中:)

solution


Tags: namenonelayerapinormsizetfbatch
1条回答
网友
1楼 · 发布于 2024-04-25 17:59:03

您可以尝试使用tf.variable_scopetf.name_scope被通过tf.get_variable()创建的变量忽略,该变量通常由tf.layers函数使用。这与通过tf.Variable创建的变量不同。在

请参阅this question以获得对差异的解释(尽管有些过时)。在

相关问题 更多 >

    热门问题