gpt4 book ai didi

tensorflow - 使用 tf.layers 时替代 arg_scope

转载 作者:行者123 更新时间:2023-12-03 02:39:04 24 4
gpt4 key购买 nike

我正在使用tf.layers重写tf.contrib.slim.nets.inception_v3。不幸的是,新的 tf.layers 模块无法与 arg_scope 一起使用,因为它没有必要的装饰器。是否有更好的机制可以用来设置图层的默认参数?或者我应该简单地为每一层添加适当的参数并删除 arg_scope ?

以下是使用 arg_scope 的示例:

with variable_scope.variable_scope(scope, 'InceptionV3', [inputs]):
with arg_scope(
[layers.conv2d, layers_lib.max_pool2d, layers_lib.avg_pool2d],
stride=1,
padding='VALID'):

最佳答案

没有其他机制可以让您在核心 TensorFlow 中定义默认值,因此您应该为每一层指定参数。

例如,这段代码:

with slim.arg_scope([slim.fully_connected], 
activation_fn=tf.nn.relu,
weights_initializer=tf.truncated_normal_initializer(stddev=0.01),
weights_regularizer=tf.contrib.layers.l2_regularizer(scale=0.0005)):
x = slim.fully_connected(x, 800)
x = slim.fully_connected(x, 1000)

会变成:

x = tf.layers.dense(x, 800, activation=tf.nn.relu,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01),
kernel_regularizer=tf.contrib.layers.l2_regularizer(scale=0.0005))
x = tf.layers.dense(x, 1000, activation=tf.nn.relu,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01),
kernel_regularizer=tf.contrib.layers.l2_regularizer(scale=0.0005))

或者:

with tf.variable_scope('fc', 
initializer=tf.truncated_normal_initializer(stddev=0.01)):
x = tf.layers.dense(x, 800, activation=tf.nn.relu,
kernel_regularizer=tf.contrib.layers.l2_regularizer(scale=0.0005))
x = tf.layers.dense(x, 1000, activation=tf.nn.relu,
kernel_regularizer=tf.contrib.layers.l2_regularizer(scale=0.0005))

请务必阅读该层的文档,以了解哪些初始值设定项默认为变量范围初始值设定项。例如,dense layerkernel_initializer 使用变量范围初始值设定项,而 bias_initializer 使用 tf.zeros_initializer()

关于tensorflow - 使用 tf.layers 时替代 arg_scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48173368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com