返回信息流问题:在添加了很多自定义层,甚至用其他类将框架封装(或许不太恰当?)起来,经过自己训练之后,还能把模型结构和参数都保存到一个文件里,然后用框架本身的load加载吗?(比如keras.model.load_model)
举例来讲,比如mask r-cnn的keras代码:https://github.com/matterport/Mask_RCNN/blob/master/mrcnn/model.py
他用自己写的MaskRcnn类封装了keras model:self.keras_model=keras.model(.....)
整个模型结构写在了model.py文件里,通过实例化model.py的类调用其方法来使用模型,但是普通的keras模型是可以直接用model.save()将模型结构和参数一起保存在一个h5文件里的,要使用的话用model.load就可以,有没有可能把这个模型也保存在一个h5文件里,然后只需要那个h5文件,不需要model.py,然后直接用model.load就可以加载呢?
我觉得应该是不可以的,要不然别人发布模型的时候为什么不直接就给个h5(预训练模型)文件,直接用官方的接口去使用就好了,偏偏要发布个model.py呢
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #35342同步于 2019/10/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
[求教]keras(或者说其他主流的框架)的模型保存问题
lt1103725556
2019/10/8镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
主要是为了用tensorRT加速,我看网上的都是先把h5转换成tf的pb文件,然后再用tensorRT,但是h5转pb一般都是用的model. load_model,但是只有用model. save保存的文件才能load_model。。[ema1]
【 在 BruceWayne94 (Deng) 的大作中提到: 】
: 模型存在文件里别人没法看?没试过直接把模型也保存成文件,这样对使用你模型的人来说完全就是个黑盒了
主要是为了用tensorRT加速,我看网上的都是先把h5转换成tf的pb文件,然后再用tensorRT,但是h5转pb一般都是用的model. load_model,但是只有用model. save保存的文件才能load_model。。[ema1]
【 在 byr0427 (Gimosolv) 的大作中提到: 】
: keras还是save_weights吧
意思是把结构和weight一起存很难实现是吧?[ema1]
【 在 byr0427 (Gimosolv) 的大作中提到: 】
: keras还是save_weights吧
你的需求我没有经验,但在需要保存模型的时候save很不推荐,尤其是有自定义层的时候,经常出现各种问题,实现难度不太了解。
【 在 lt1103725556 (挪威的森林) 的大作中提到: 】
: 意思是把结构和weight一起存很难实现是吧?[ema1]
哦哦,多谢[ema4]
【 在 byr0427 (Gimosolv) 的大作中提到: 】
: 你的需求我没有经验,但在需要保存模型的时候save很不推荐,尤其是有自定义层的时候,经常出现各种问题,实现难度不太了解。
当你有 custom_objects 的时候就没办法直接 load 的。 tf 2.0 里的 keras 的 save 已经支持存成 tf 的 savedmodel 而不是 h5 了(https://www.tensorflow.org/tutorials/keras/save_and_load#%E9%80%9A%E8%BF%87_saved_model_%E4%BF%9D%E5%AD%98)。 别的框架例如 caffe, 模型结构和 weights 分开写。