存储给定list_ops集合的默认参数。
tf.contrib.framework.arg_scope(
list_ops_or_scope,
**kwargs
)
参数:
范围:
可能产生的异常:
TypeError
: if list_ops is not a list or a tuple.ValueError
: if any op in list_ops has not be decorated with @add_arg_scope.例:
在定义卷积层时,可能总是使用相同的填充类型和相同的初始化器,甚至可能使用相同的卷积大小。对于池化,可能也总是使用相同的2x2池大小,等等。arg_scope是一种避免反复向相同的层类型提供相同参数的方法。
from third_party.tensorflow.contrib.layers.python import layers
arg_scope = tf.contrib.framework.arg_scope
with arg_scope([layers.conv2d], padding='SAME',
initializer=layers.variance_scaling_initializer(),
regularizer=layers.l2_regularizer(0.05)):
net = layers.conv2d(inputs, 64, [11, 11], 4, padding='VALID', scope='conv1')
net = layers.conv2d(net, 256, [5, 5], scope='conv2')
conv2d的第一个调用将如下所示:
layers.conv2d(inputs, 64, [11, 11], 4, padding='VALID',
initializer=layers.variance_scaling_initializer(),
regularizer=layers.l2_regularizer(0.05), scope='conv1')
conv2d的第二个调用也将使用arg_scope的默认填充:
layers.conv2d(inputs, 64, [11, 11], 4, padding='VALID',
initializer=layers.variance_scaling_initializer(),
regularizer=layers.l2_regularizer(0.05), scope='conv1')
如何重用arg_scope的例子:
with arg_scope([layers.conv2d], padding='SAME',
initializer=layers.variance_scaling_initializer(),
regularizer=layers.l2_regularizer(0.05)) as sc:
net = layers.conv2d(net, 256, [5, 5], scope='conv1')
with arg_scope(sc):
net = layers.conv2d(net, 256, [5, 5], scope='conv2')