tensorflow: arg_scope()

with arg_scope():网络

1.容许咱们设定一些共享参数,并将其进行保存,必要时还能够嵌套覆盖函数

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

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

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所包含的网络层),你有设定参数,那么参数按照你设定的;若是你没有设定参数,那么就用默认的(预先设定好的)
相关文章
相关标签/搜索