二、使用工具同样我们还是来看下技术栈和工具:模型处理:Python 3.10(基础环境)、TensorFlow 2.15(加载.h5 模型)、tf2onnx(格式转换)、onnxruntime(ONNX 于是我们需要向 CodeBuddy 输入结构化需求,明确每个环节的技术细节与约束条件:“请协助开发两套 Python 脚本,具体要求如下:模型转换脚本(model_convert.py):使用 tf2onnx 将错误信息直接反馈给 CodeBuddy 后,其迅速定位问题根源 ——tf2onnx 版本与 TensorFlow 2.15 不兼容,并给出解决方案:“安装 tf2onnx==1.14.0 版本,该版本针对 执行pip install tf2onnx==1.14.0后重新运行脚本,成功生成 ONNX 模型文件,且通过onnxruntime.get_inputs()验证,输入维度与数据类型均与原模型一致。 改进后代码:模型转换脚本(model_convert.py)import tensorflow as tffrom tf2onnx import convertdef convert_h5_to_onnx
谢天谢地,存在tf2onnx库。tf2onnx是一个导出工具,用于从tensorflow模型生成ONNX文件。 安装Custom Ops库之后,我们将 USE下载到某个文件夹中,并为tf2onnx库提供输出路径。除此之外,我们还可以直接导出模型: #! --output universal-sentence-encoder-5.onnx --opset 12 --extra_opset ai.onnx.contrib:1 --tag serve tf2onnx 看看这里的参数:https://github.com/onnx/tensorflow-onnx/blob/master/tf2onnx/convert.py 由于底层图和附加的Ops的不同,对USE运行推理现在有些不同
下一步是使用tf2onnx Python包将其转换为ONNX: python -m tf2onnx.convert \ --input .
这个debug.onnx使用tf2onnx导出,导出后tf2onnx会自动对这个onnx做一些优化,例如常量折叠、算子融合等等一些常规操作,一般来说这些操作不会影响网络结构(也会出现影响的情况! (fun) oldpan@oldpan-fun:~/code$ cat net.txt | head ir_version: 4 producer_name: "tf2onnx" producer_version
层:框架与应用层 —— 生态连接器 原生支持:MindSpore(深度协同); 无缝兼容: PyTorch(via ONNX / TorchAdapter); TensorFlow(via tf2onnx
TensorFlow:TensorFlow 也支持将模型导出为 ONNX 格式,可以使用 tf2onnx 工具。
可以使用tf2onnx将TensorFlow模型转换为ONNX格式,然后在目标平台上加载ONNX模型。 import tf2onnx import tensorflow as tf model = tf.keras.models.load_model('model.h5') spec = (tf.TensorSpec
其它问题 当我们使用tf2onnx工具将TensorFlow模型转为ONNX模型时,模型的输入batch维度没有被设置,我们需要自行添加。
TensorFlow,CNTK,pytorch,Keras,Caffe2,Theano,MXNet,Chainer 等流行框架,以及 jupyter,matplotlib, pandas,scipy,onnx,tf2onnx