【tensorflow】加载pretrained model出现的大量adam变量丢失

最近在调试tensorflow的fine-tune时,出现大量adam变量丢失,如下代码块

WARNING:tensorflow:Variable resnet_v1_50/conv1/weights/Adam missing in checkpoint ./pretrain_model/resnet_v1_50.ckpt
WARNING:tensorflow:Variable resnet_v1_50/conv1/weights/Adam_1 missing in checkpoint ./pretrain_model/resnet_v1_50.ckpt
WARNING:tensorflow:Variable resnet_v1_50/conv1/BatchNorm/gamma/Adam missing in checkpoint ./pretrain_model/resnet_v1_50.ckpt
WARNING:tensorflow:Variable resnet_v1_50/conv1/BatchNorm/gamma/Adam_1 missing in checkpoint ./pretrain_model/resnet_v1_50.ckpt
WARNING:tensorflow:Variable resnet_v1_50/conv1/BatchNorm/beta/Adam missing in checkpoint ./pretrain_model/resnet_v1_50.ckpt
WARNING:tensorflow:Variable resnet_v1_50/conv1/BatchNorm/beta/Adam_1 missing in checkpoint ./pretrain_model/resnet_v1_50.ckpt

在这里插入图片描述

这是由于 要恢复的变量设置optimizer的摆放位置出错造成的。原因很简单,在你指定

variables_to_restore = slim.get_variables_to_restore()

之前,声明了optimizer优化器时,则优化器里面的adam的一些参数也被加载到图中,但是预训练模型中并不含这些参数,则出现了大量的adam缺失。

解决办法:

更换 指定恢复变量optimizer 的摆放位置:

之前是:

opt = tf.train.AdamOptimizer(learning_rate=lr_v)
variables_to_restore = slim.get_variables_to_restore()

更改为:

variables_to_restore = slim.get_variables_to_restore()
opt = tf.train.AdamOptimizer(learning_rate=lr_v)

问题就可以解决。

参考:
https://github.com/tensorflow/tensorflow/issues/7244
https://blog.csdn.net/Cyril__Li/article/details/80206555

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值