tensorflow: arg_scope()

with arg_scope():

1.允许我们设定一些共享参数,并将其进行保存,必要时还可以嵌套覆盖

2.在指定的函数调用时,可以将一些默认参数塞进去。

接下来看一个tensorflow自带的例子。

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')

# arg_scope()参数解释:
参数1:
[layers.conv2d]表示要执行操作的网络,你也可以继续添加其它网络层,例如池化层。
参数2,3等就是你要设定默认的参数。
当我们第一次调用layers.conv2d的时候。卷积层的操作实际上是这样的:
layers.conv2d(inputs, 64, [11, 11], 4, padding='VALID',
initializer=layers.variance_scaling_initializer(),
regularizer=layers.l2_regularizer(0.05), scope='conv1')

当我们第二次调用layers.conv2d的时候,卷积层的操作实际上是这样的:
layers.conv2d(inputs, 256, [5, 5], padding='SAME',
initializer=layers.variance_scaling_initializer(),
regularizer=layers.l2_regularizer(0.05), scope='conv2')

也就是说,当你在调用相关的网络层的时候(参数1所包含的网络层),你有设定参数,那么参数
按照你设定的;如果你没有设定参数,那么就用默认的(预先设定好的)
 










原文地址:https://www.cnblogs.com/elitphil/p/11821468.html