tensorflow2将ckpt权重模型转成pd模型再转成onnx


之前由于训练模型时将使用的是model.save_weights保存的ckpt模型。为了做部署所以要将ckpt转成pd模型。
一般保存为ckpt模型后有以下几个文件

checkpoint文件表明有哪些文件
.ckpt.data 权重文件
可以还有一个.meta文件,这个是网络结构文件 

网上一大片,各种先构件图,然后跑一下,然后在保存文件的操作。其实在tensorflow2中并没必要。
所谓的构建图然后跑一下的操作的逻辑,其实就是构建网络结构和build或者fit的操作。

我这里因为网络是自己设计的所以,我就没有做特殊的操作

重点1

如果是训练的时候,构建网络不需要设置输入的shape,后面可以通过build或者fit来设置。
但是如果是用ckpt转pd,一定要设置。
就是设置这个参数,输入shape根据具体的设置

self._set_inputs(tf.TensorSpec([None,224,224,3],tf.float32,name='inputs'))

然后就是直接保存就很好了。
默认save方法保存的模型就是pd模型。

ETNetwork.save("./data/pb")#这里./data/pb是我保存的路径

pd转成onnx

pip install tf2onnx
python -m tf2onnx.convert --saved-model .\data\pb --output .\data\onnx\etnet.onnx --opset 7


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM