深度学习模型转换器
onnx2keras的Python项目详细描述
onnx2keras
onnx-to-keras深度神经网络转换器。
API
onnx_to_keras(onnx_model, input_names, input_shapes=None, name_policy=None, verbose=True, change_ordering=False)
onnx_model
:要转换的onnx模型
input_names
:带有图形输入名称的列表
input_shapes
:覆盖输入形状(实验性)
name_policy
:覆盖层名称(实验性)
verbose
:详细输出
change_ordering
将排序改为hwc(实验性)
return:keras模型
开始
onnx模型
import onnx
from onnx2keras import onnx_to_keras
# Load ONNX model
onnx_model = onnx.load('resnet18.onnx')
# Call the converter (input - is the main model input name, can be different for your model)
k_model = onnx_to_keras(onnx_model, ['input'])
keras模型将存储到k_model
变量中。很简单,不是吗?
Pythorch型号
使用onnx作为中间格式,还可以转换pytorch模型。
import numpy as np
import torch
import onnx
from torchvision.models.resnet import resnet18
from onnx2keras import onnx_to_keras, check_torch_keras_error
if __name__ == '__main__':
model = resnet18()
model.eval()
input_np = np.random.uniform(0, 1, (1, 3, 224, 224))
input_var = torch.FloatTensor(input_np)
output = model(input_var)
torch.onnx.export(model, (input_var), "resnet18.onnx",
verbose=True,
input_names=['input'],
output_names=['output']
)
onnx_model = onnx.load('resnet18.onnx')
k_model = onnx_to_keras(onnx_model, ['input'])
error = check_torch_keras_error(model, k_model, input_np)
print('Error: {0}'.format(error)) # 1e-6 :)
许可证
此软件受麻省理工学院许可证的保护。