深度学习模型转换器

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 :)

许可证

此软件受麻省理工学院许可证的保护。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用硬件相关VM参数(重新)启动Java应用程序的正确方法?   java有一个Eclipse插件弹出菜单,只有在选择文件夹时才会出现   java演示简单Ajax ans Servelt实现失败   java如何在不需要OAuth授权的情况下代表组织用户提供密码   java检查一个字符串是否等于另一个字符串的子字符串   java我可以从for循环中的1开始初始化2D数组吗   使用选择排序的java排序2D数组   java如何在一轮投票后重新开始,而不在其中存储统计数据   我的Java代码不断向文本文件添加重复项   java MapReduce Hadoop字长频率不起作用   试图保存Iterable时执行独立工作时发生java错误   java这两个源是同一个场景生成器吗?   java计划重试关联的JMS消息