在anaconda3中完成由keras到onnx的模型转换

win7+anaconda3

一 创建环境
1 创建基于python3.5.2的环境“test”

conda create -n test python=3.5.2

2 查看所有已安装的环境

conda info -e

3 进入环境“test”

conda activate test

二 安装tensorflow1.13.1
(参考python/tensorflow/keras相互兼容版本
链接:https://docs.floydhub.com/guides/environments/
1 在清华镜像上下载tensorflow1.13.1,注意python版本(cp35为python3.5)和操作系统(win_amd64为64位windows)
链接:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/tensorflow/
2 本地安装

pip install E:\Download\tensorflow-1.13.1-cp35-cp35m-win_amd64.whl

3 由于python3.5.2不是最新,故需要更新pip

python -m pip install --upgrade pip 

三 安装相关工具
1 安装jupyter

pip install jupyter

2 安装keras
清华镜像上下载keras2.3.1
链接:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/keras/
本地安装

pip install E:\Download\Keras-2.3.1-py2.py3-none-any.whl

3 安装onnx转换工具包onnxmltools(包含onnx、keras2onnx)

pip install onnxmltools

4 安装onnxruntime(跨平台高性能onnx模型运行引擎)

pip install onnxruntime

5 查看已安装所有工具包版本

pip list

四 在jupyter中编写脚本,执行模型转换
1 启动jupyter notebook,新建python3代码notebook

jupyter notebook

创建python3代码notebook
2 编写脚本,命名为convert

import win_unicode_console           #导入模块win_unicode_console
win_unicode_console.enable()          #使能win_unicode_console
import os                            #由于keras需要使用tensorflow的后端,故需先于keras导入os
import keras                         #导入keras
import keras2onnx                    #导入转换工具模块keras2onnx
import onnx                          #导入onnx
from keras.models import load_model                       #从模块keras.model中导入函数load_model,用于下载待转换模型
model = load_model('E:/jupyter_notebook/keras/yolo.h5')    #调用load_model下载待转换模型yolo.h5,传送给model
onnx_model = keras2onnx.convert_keras(model, model.name)   #调用模型转换函数keras2onnx.convert_keras,生成onnx模型,传送给onnx_model
temp_model_file = 'E:/jupyter_notebook/keras/yolo.onnx'    #指定onnx模型保存路径并命名为yolo.onnx
onnx.save_model(onnx_model, temp_model_file)               #保存模型

代码运行结束后得到yolo.onnx
(warnings.warn('No training configuration found in save file: '可忽略,参见链接

总结:
之前的安装过程中出现各种包互相不兼容的问题,多次试错后得到一套成功匹配的方案,即
Python 3.5.2 + tensorflow 1.13.1 + keras 2.3.1 + keras2onnx 1.6.1 + onnx 1.6.0 + onnxmltools 1.6.1 + onnxruntime 1.2.0 + protobuf 3.11.3 +numpy 1.18.2
备注:
1 protobuf和numpy的版本可能会导致环境出错,需要重点关注。卸载后重新下载、编译可解决问题。
2 keras2onnx要求模型转换的python环境与模型训练的python环境保持一致,否则会报错:System Error: unknown opcode。故转换模型前需确认模型训练的python版本。
3 win_unicode_console模块相关
https://pypi.org/project/win_unicode_console/
https://blog.whezh.com/encoded/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值