tensorflow转onnx的实现方法

作者:小广向前进 时间:2022-07-08 23:04:51 

安装tf2onnx以及onnxruntime

pip install onnxruntime
pip install tf2onnx

tf 转为onnx步骤为如下:

  • 将tf动态图冻结,生成冻结后的pb文件

  • 使用tf2onnx 将pb文件转为onnx文件

将tf动态图冻结使用如下代码:

def export_frozen_graph(model, model_dir, name_pb) :
    f = tf.function(lambda x: model(inputs=x))
    f = f.get_concrete_function(x=(tf.TensorSpec(model.inputs[0].shape, model.inputs[0].dtype)))
    frozen_func = convert_variables_to_constants_v2(f)
    frozen_func.graph.as_graph_def()

    print("-" * 50)
    print("Frozen model inputs: ")
    print(frozen_func.inputs)
    print("Frozen model outputs: ")
    print(frozen_func.outputs)

    tf.io.write_graph(graph_or_graph_def=frozen_func.graph,
                      logdir=model_dir,
                      name=name_pb,
                      as_text=False)

使用tf2onnx 将pb文件转为onnx文件时需要在终端执行,需要指出的是大部分tf模型的输入layout都是NHWC,而ONNX模型的输入layout为NCHW,因此建议在转换的时候加上--inputs-as-nchw这个选项,其他选项可以参考文档,非常详细,具体运行命令如下:

python -m tf2onnx.convert --input yolo.pb --output model.onnx --outputs Identity:0,Identity_1:0,Identity_2:0 --inputs x:0 --inputs-as-nchw x:0 --opset 10

参数说明:

  • input 输入的pb模型

  • output 输出的onnx文件名

  • inputs 输入层名字,有多个输入时,中间用逗号隔开

  • outputs 输出层名字,有多个输出时,中间用逗号隔开

  • –inputs-as-nchw 将输入作为nchw格式,注意加上输入层名字

  • –opset onnx 版本号

通过程序直接转:

tf2onnx.convert.from_keras(model, inputs_as_nchw=[model.inputs[0].name], output_path=model_filepath + 'yolo.onnx') --opset 10

来源:https://blog.csdn.net/qq_45723275/article/details/129283375

标签:tensorflow,onnx
0
投稿

猜你喜欢

  • Python实现文件压缩和解压的示例代码

    2022-04-10 08:20:19
  • sqlserver substring函数使用方法小结

    2024-01-19 17:53:03
  • Python输入整数进行排序方式

    2023-05-14 11:03:15
  • Python中defaultdict与dict的差异详情

    2023-10-02 19:39:29
  • 怎样使你的 JavaScript 代码简单易读(推荐)

    2024-04-16 09:53:22
  • SQL语句练习实例之七 剔除不需要的记录行

    2011-11-03 16:50:51
  • js阻止移动端页面滚动的两种方法

    2023-08-04 17:36:12
  • jupyter notebook清除输出方式

    2021-05-08 02:51:13
  • 20分钟成功编写bootstrap响应式页面 就这么简单

    2023-08-12 06:12:13
  • Python中使用装饰器和元编程实现结构体类实例

    2023-04-17 17:44:36
  • python的open函数使用案例代码

    2022-01-20 16:41:30
  • django数据模型on_delete, db_constraint的使用详解

    2023-02-16 04:48:06
  • PHP levenshtein()函数用法讲解

    2023-06-01 15:20:29
  • python正则表达式实现自动化编程

    2022-01-08 12:24:33
  • sqlserver服务器验证改为混合验证模式步骤

    2024-01-20 18:02:28
  • Python常用库大全及简要说明

    2023-06-10 00:35:49
  • SQL语句实现查询当前数据库IO等待状况

    2024-01-17 02:04:32
  • python制作图片缩略图

    2023-08-23 18:49:32
  • MySQL数据库中删除重复记录的方法总结[推荐]

    2024-01-13 07:13:45
  • 基于Python 优化 MUI标题栏

    2022-10-31 17:12:49
  • asp之家 网络编程 m.aspxhome.com