Harryzzzzzhang 2022-04-17 11:12 采纳率: 0%
浏览 215
已结题

关于Keras模型导出遇到Model expects 0 top-level weight(s). Received 1 saved top-level weight(s)的问题!

问题遇到的现象和发生背景

Keras训练模型结束后想要直接使用保存好的weights来预测模型,结果遇到了标题所示的错误

问题相关代码
if __name__ == "__main__":
    # Use VOC 2012 Dataset
    horse_path = 'membrane'
    batch_size = 2
    model = FCN.get_fcn8s_model()
    print('======== Start Test ===========')
    model.load_weights('fcn32s.h5')
    # 取val图片,测试一下效果
    val_gen2 = horse_test_gen.get_horse_generator(horse_path, batch_size=1, input_hw=(256, 256, 3),
                                                  mask_hw=(256, 256, 2))
    i = 0
    for val_images in val_gen2:
        img_np = val_images[0]
        img_np = (img_np + 1.) * 128
        im0 = Image.fromarray(np.uint8(img_np))
        im0.save('output/{}_img.jpg'.format(i))

        res = model.predict(val_images)[0]
        pred_label = res.argmax(axis=2)
        pred_label[pred_label == 1] = 255
        im1 = Image.fromarray(np.uint8(pred_label))
        im1.save('output/{}_pred.png'.format(i))

        i += 1
        if i == 3:
            print('End test')
            sys.exit(0)
运行结果及报错内容
======== Start Test ===========
Traceback (most recent call last):
  File "E:/PycharmProjects/CloudInn/image_segmentation-master/main.py", line 42, in <module>
    model.load_weights('fcn32s.h5')
  File "E:\PycharmProjects\CloudInn\venv\lib\site-packages\keras\engine\training_v1.py", line 214, in load_weights
    return super(Model, self).load_weights(filepath, by_name, skip_mismatch)
  File "E:\PycharmProjects\CloudInn\venv\lib\site-packages\keras\utils\traceback_utils.py", line 67, in error_handler
    raise e.with_traceback(filtered_tb) from None
  File "E:\PycharmProjects\CloudInn\venv\lib\site-packages\keras\saving\hdf5_format.py", line 748, in load_weights_from_hdf5_group
    raise ValueError(
ValueError: Weight count mismatch for top-level weights when loading weights from file. Model expects 0 top-level weight(s). Received 1 saved top-level weight(s)

自己去网上搜索也没有找到个所以然,为什么会说“模型要求0个顶级权重。收到1个已保存的顶级权重。”,这个要怎么解决?
错误报在“model.load_weights('fcn32s.h5')”这里

  • 写回答

1条回答 默认 最新

  • Harryzzzzzhang 2022-04-17 18:42
    关注

    哦不好意思大家!我解决了,是在声明model时没有传入相关的参数,把第五行改成我定义的

        model = FCN.get_fcn8s_model(input_shape=(256, 256, 3), class_no=2)
    

    就好啦

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月25日
  • 已采纳回答 4月17日
  • 修改了问题 4月17日
  • 创建了问题 4月17日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?