例如如下代码
import tensorflow as tf
"""
使用@slim.add_arg_scope修饰目标函数
用 slim.arg_scope()为目标函数设置默认参数.
#The TensorFlow contrib module will not be included in TensorFlow 2.0.
首先用@slim.add_arg_scope修饰目标函数fun1(),然后利用slim.arg_scope()为它设置默认参数。
"""
slim =tf.contrib.slim
@slim.add_arg_scope
def fun1(a=0,b=0):
return (a+b)
with slim.arg_scope([fun1],a=10):
x=fun1(b=30)
print(x)
所以,在使用过程中可以直接slim.conv2d( )等函数设置默认参数。例如在下面的代码中,不做单独声明的情况下,slim.conv2d, slim.max_pool2d两个函数默认的步长都设为1,padding模式都是’VALID’的。但是也可以在调用时进行单独声明。这种参数设置方式在构建网络模型时,尤其是较深的网络时,可以节省时间。
with slim.arg_scope(
[slim.conv2d, slim.max_pool2d],stride = 1, padding = 'VALID'):
net = slim.conv2d(inputs, 32, [3, 3], stride = 2, scope = 'conv1')
net = slim.conv2d(net, 32, [3, 3], scope = 'conv2')
net = slim.conv2d(net, 64, [3, 3], padding = 'SAME', scope = 'conv3')