tf.estimator.LinearClassifier输出权重解释

时间:2018-09-01 07:37:37

标签: python tensorflow

我是Tensorflow和机器学习的新手,正在训练经典MNIST数据集上的tf.estimator.LinearClassifier。

在训练过程之后,我使用classifier.get_variable_names()读取输出权重和偏差:

"['global_step', 'linear/linear_model/bias_weights', 'linear/linear_model/bias_weights/part_0/Adagrad', 'linear/linear_model/pixels/weights', 'linear/linear_model/pixels/weights/part_0/Adagrad']"

我的问题是:linear/linear_model/bias_weightslinear/linear_model/bias_weights/part_0/Adagrad有什么区别?它们的大小相同。

我能想象的唯一解释是linear/linear_model/bias_weightslinear/linear_model/bias_weights/part_0/Adagrad分别代表训练过程开始和结束时的权重。

但是,我不确定,也找不到任何在线内容。

1 个答案:

答案 0 :(得分:0)

linear/linear_model/bias_weights是您训练的模型权重。

linear/linear_model/bias_weights/part_0/Adagrad是您使用AdaGrad优化器而来的。该优化器的特殊功能是保留过去渐变的“内存”,并在每个训练步骤中使用它来重新缩放渐变。如果您想了解更多(非常数学),请参见the AdaGrad paper
重要的部分是linear/linear_model/bias_weights/part_0/Adagrad存储此“内存”。返回它是因为它在技术上在程序中是tf.Variable,但是在模型中它不是实际的变量/权重。只有linear/linear_model/bias_weights是。当然,linear/linear_model/pixels/weights也是如此。