之前由于训练模型时将使用的是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