【发布时间】:2017-12-26 20:57:33
【问题描述】:
我是神经网络和TensorFlow的初学者,我正在尝试了解arg_scope的作用。
在我看来,这是一种将“你想做的事情”字典放在具有特定变量的特定层的方法。如果我错了,请纠正我。您如何准确地向初学者解释它的用途?
【问题讨论】:
标签: python tensorflow neural-network conv-neural-network
我是神经网络和TensorFlow的初学者,我正在尝试了解arg_scope的作用。
在我看来,这是一种将“你想做的事情”字典放在具有特定变量的特定层的方法。如果我错了,请纠正我。您如何准确地向初学者解释它的用途?
【问题讨论】:
标签: python tensorflow neural-network conv-neural-network
在定义卷积层时,您可能总是使用相同的填充类型和相同的初始化器,甚至可能使用相同的卷积大小。对于您的池,也许您也总是使用相同的2x2 池大小。以此类推。
arg_scope 是一种避免向相同层类型反复提供相同参数的方法。
来自source documentation 的示例:
tf.contrib.framework.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, 256, [5, 5], padding='SAME', initializer=layers.variance_scaling_initializer(), regularizer=layers.l2_regularizer(0.05), scope='conv2')如何重用
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')
【讨论】: