首页 > 解决方案 > 评估步骤的权重衰减 - Tensorflow

问题描述

我的体重定义为

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.我不清楚。我应该使用它吗?

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

标签: pythontensorflowmachine-learningdeep-learning

解决方案


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

在构建机器学习模型时,通常可以方便地区分包含可训练模型参数的变量和其他变量,例如用于计算训练步数的全局步长变量。为了使这更容易,变量构造函数支持 trainable= 参数。如果为 True,则新变量也将添加到图形集合 GraphKeys.TRAINABLE_VARIABLES。便利函数 trainable_variables() 返回此集合的内容。各种优化器类使用此集合作为要优化的变量的默认列表。

因此,您可以为方便起见添加它,但它不是强制性的。


推荐阅读