retinaface-keras icon indicating copy to clipboard operation
retinaface-keras copied to clipboard

运行pretrain模型时遇到的问题

Open ChengHan111 opened this issue 4 years ago • 6 comments

您好我在运行pretrain模型运行predict函数时,出现了shape不匹配的问题,我使用resnet同样进行了测试不会出现 请问我需要先根据你的pretrain模型进行重新训练吗?谢谢 ValueError: Layer #99 (named "batch_normalization_5"), weight <tf.Variable 'batch_normalization_5/gamma:0' shape=(32,) dtype=float32, numpy= array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], dtype=float32)> has shape (32,), but the saved weight has shape (64,).

ChengHan111 avatar Aug 18 '20 03:08 ChengHan111

你选对模型了吗,我有四个权重文件,两个是主干网络的,两个是训练好的

bubbliiiing avatar Aug 19 '20 04:08 bubbliiiing

这个问题我也遇到了,需要先加载一遍模型,然后重新保存,resnet50 有同样的问题

from nets.retinaface import RetinaFace
from utils.config import cfg_mnet, cfg_re50
rr = RetinaFace(cfg_mnet, backbone="mobilenet")
# retinaface.py 中 generate 加载的方式 `by_name=True`,会报错
rr.load_weights('model_data/retinaface_mobilenet025.h5', by_name=True)
# ValueError: Layer #99 (named "batch_normalization_5"), weight ... has shape (32,), but the saved weight has shape (64,).

# 不使用 `by_name=True` 加载,并重新保存
rr.load_weights('model_data/retinaface_mobilenet025.h5')
rr.save('model_data/retinaface_mobilenet025_fixed.h5')

# 重新使用 `by_name=True` 加载测试
rr.load_weights('model_data/retinaface_mobilenet025_fixed.h5', by_name=True)

leondgarse avatar Aug 22 '20 10:08 leondgarse

我没有遇见过,是不是版本不同导致的,你们用的什么版本

bubbliiiing avatar Aug 25 '20 03:08 bubbliiiing

奇怪,刚刚重新 git reset --hard 了一下,这个问题又不见了,之前每次都是必现的。。 版本的话我这边是 TF1.15.0 / TF 1.13.1 的都可以了。。 ~~TF 2.3.0 keras 本身会报错:AttributeError: module 'keras.backend.tensorflow_backend' has no attribute '_is_tf_1'~~ 我再试试

leondgarse avatar Aug 25 '20 04:08 leondgarse

找到了,我这边报错的版本是 TF 2.3.0

leondgarse avatar Aug 25 '20 08:08 leondgarse

这个问题我也遇到了,需要先加载一遍模型,然后重新保存,resnet50 有同样的问题

from nets.retinaface import RetinaFace
from utils.config import cfg_mnet, cfg_re50
rr = RetinaFace(cfg_mnet, backbone="mobilenet")
# retinaface.py 中 generate 加载的方式 `by_name=True`,会报错
rr.load_weights('model_data/retinaface_mobilenet025.h5', by_name=True)
# ValueError: Layer #99 (named "batch_normalization_5"), weight ... has shape (32,), but the saved weight has shape (64,).

# 不使用 `by_name=True` 加载,并重新保存
rr.load_weights('model_data/retinaface_mobilenet025.h5')
rr.save('model_data/retinaface_mobilenet025_fixed.h5')

# 重新使用 `by_name=True` 加载测试
rr.load_weights('model_data/retinaface_mobilenet025_fixed.h5', by_name=True)

通过您的方法解决了,非常感谢

ChengHan111 avatar Aug 25 '20 14:08 ChengHan111