【问题标题】:what does arg_scope actually do?arg_scope 实际上是做什么的?
【发布时间】:2017-12-26 20:57:33
【问题描述】:

我是神经网络和TensorFlow的初学者,我正在尝试了解arg_scope的作用。

在我看来,这是一种将“你想做的事情”字典放在具有特定变量的特定层的方法。如果我错了,请纠正我。您如何准确地向初学者解释它的用途?

【问题讨论】:

    标签: python tensorflow neural-network conv-neural-network


    【解决方案1】:

    在定义卷积层时,您可能总是使用相同的填充类型和相同的初始化器,甚至可能使用相同的卷积大小。对于您的池,也许您也总是使用相同的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')
    

    【讨论】:

      猜你喜欢
      • 2011-03-11
      • 2010-11-26
      • 2015-06-23
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多