权重在评估步骤中衰减-Tensorflow

时间:2019-02-04 13:13:42

标签: python tensorflow machine-learning deep-learning

我的体重定义为

weights = {
        'W_conv1': tf.get_variable('W_conv1', shape=[...], dtype=tf.float32, initializer=tf.truncated_normal_initializer(stddev=0.01)),
        'W_conv2': tf.get_variable('W_conv2', shape=[...], dtype=tf.float32, initializer=tf.truncated_normal_initializer(stddev=0.01)),
        'W_conv3': tf.get_variable('W_conv3', shape=[...], dtype=tf.float32, initializer=tf.truncated_normal_initializer(stddev=0.01)),
        ...
}

# conv2d network
...

我想使用权重衰减,所以我添加了例如参数

regularizer=tf.contrib.layers.l1_regularizer(0.0005)

tf.get_variable。现在,我想知道在评估阶段这是否仍然正确,或者我是否必须将正则化因子设置为0。

还有另一个参数trainable。文档说If True also add the variable to the graph collection GraphKeys.TRAINABLE_VARIABLES.对我来说还不清楚。我应该使用它吗?

有人可以向我解释权重衰减是否以某种错误的方式影响评估步骤?在这种情况下我该如何解决?

1 个答案:

答案 0 :(得分:1)

在反向传播训练期间,在权重更新步骤中使用权重衰减。评估过程中没有这样的权重更新,因此在评估过程中没有任何影响。关于可训练的论点,我认为官方文档的摘录很简洁

  

建立机器学习模型时,通常很方便   区分持有可训练模型参数的变量   和其他变量,例如用于计算的全局步骤变量   培训步骤。为了使此操作更容易,变量构造函数支持   一个trainable =参数。如果为True,则还会添加新变量   到图形集合GraphKeys.TRAINABLE_VARIABLES。便利   函数trainable_variables()返回此内容   采集。各种Optimizer类都将此集合用作   要优化的默认变量列表。

因此,为方便起见,您可以添加它,但这不是必需的。