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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shwan_ma/article/details/82868751

最近在调试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

猜你喜欢

转载自blog.csdn.net/shwan_ma/article/details/82868751