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所包含的网络层),你有设定参数,那么参数
按照你设定的;如果你没有设定参数,那么就用默认的(预先设定好的)