【问题标题】:Why are there two additional variables, in the checkpoint, for each layer?为什么检查点中的每一层都有两个额外的变量?
【发布时间】:2018-07-03 02:55:49
【问题描述】:

我创建了一个具有三个卷积层和两个全连接层的卷积神经网络。我使用tf.train.saver() 来保存变量。 当我使用inspect_checkpoint.py 检查保存在检查点文件中的变量时。为什么每一层都保存了两个额外的变量,比如Adam_1Adam?另外,beta1_powerbeta2_power 是什么?

conv_layer1_b  (DT_FLOAT)  [32]

conv_layer1_w  (DT_FLOAT)  [1,16,1,32]

conv_layer1_b/Adam  (DT_FLOAT)  [32]

conv_layer1_w/Adam (DT_FLOAT) [1,16,1,32]

conv_layer1_w/Adam_1 (DT_FLOAT) [1,16,1,32]

conv_layer1_b/Adam_1 (DT_FLOAT) [32]

conv_layer3_w/Adam (DT_FLOAT) [1,16,64,64]

conv_layer3_w (DT_FLOAT) [1,16,64,64]

conv_layer3_b/Adam_1 (DT_FLOAT) [64]

conv_layer3_b (DT_FLOAT) [64]

conv_layer3_b/Adam (DT_FLOAT) [64]

conv_layer3_w/Adam_1 (DT_FLOAT) [1,16,64,64]

conv_layer2_w/Adam_1 (DT_FLOAT) [1,16,32,64]

conv_layer2_w/Adam (DT_FLOAT) [1,16,32,64]

conv_layer2_w (DT_FLOAT) [1,16,32,64]

conv_layer2_b/Adam_1 (DT_FLOAT) [64]

conv_layer2_b (DT_FLOAT) [64]

conv_layer2_b/Adam (DT_FLOAT) [64]

beta1_power (DT_FLOAT) []

beta2_power (DT_FLOAT) []

NN1_w (DT_FLOAT) [2432,512]

NN1_b (DT_FLOAT) [512]

NN1_w/Adam_1 (DT_FLOAT) [2432,512]

NN1_b/Adam_1 (DT_FLOAT) [512]

NN1_w/Adam (DT_FLOAT) [2432,512]

NN1_b/Adam (DT_FLOAT) [512]

NN2_w (DT_FLOAT) [512,2]

NN2_b (DT_FLOAT) [2]

NN2_w/Adam_1 (DT_FLOAT) [512,2]

NN2_b/Adam_1 (DT_FLOAT) [2]

NN2_w/Adam (DT_FLOAT) [512,2]

NN2_b/Adam (DT_FLOAT) [2]

【问题讨论】:

    标签: tensorflow optimization deep-learning


    【解决方案1】:

    您正在使用 Adam 优化器 (https://arxiv.org/abs/1412.6980) 进行优化。 Adam 有两个状态变量来存储与参数(算法 1)大小相同的梯度的统计信息,这是每个参数变量的两个附加变量。优化器本身有一些超参数,其中 β1 和 β2,我猜在你的情况下它们存储为变量。

    【讨论】:

      猜你喜欢
      • 2014-05-07
      • 1970-01-01
      • 2015-10-13
      • 2019-08-11
      • 2014-12-20
      • 1970-01-01
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多