用python 接口写一个简单的ONNX卷积网络

本文提供初学者一个简单的案例,使用onnx python接口,构建一个输入shape为[1,1,3,3],输出为[1,3,3,3]的单一卷积网络。卷积的权重全为1,偏置全为2。

构建ONNX模型的代码

import onnx 
import numpy as np
import onnxruntime
input = onnx.helper.make_tensor_value_info("input",onnx.TensorProto.FLOAT,[1,1,3,3])
output = onnx.helper.make_tensor_value_info("output",onnx.TensorProto.FLOAT,[1,3,3,3])
conv_node = onnx.helper.make_node(
            'Conv',
            inputs=['input', 'conv1.weight','conv1.bias'],
            outputs=['output'],
            kernel_shape=[3, 3],
            pads = [1,1,1,1]
        )
weight_data = np.ones([3,1,3,3],dtype=np.float32)
bias_data = 2*np.ones([3],dtype=np.float32)
weight_tensor=onnx.helper.make_tensor("conv1.weight",onnx.TensorProto.FLOAT,[3,1,3,3],weight_data.tobytes(),raw=True)
bias_tensor=onnx.helper.make_tensor("conv1.bias",onnx.TensorProto.FLOAT,[3],bias_data.tobytes(),raw=True)

graph = onnx.helper.make_graph(nodes=[conv_node], name='test_graph',
                   inputs=[input],
                   outputs=[output],initializer=[weight_tensor,bias_tensor])

model = onnx.helper.make_model(graph)
onnx.checker.check_model(model)
onnx.save(model, "conv.onnx")

session = onnxruntime.InferenceSession("conv.onnx")
input = np.ones([1,1,3,3],dtype=np.float32)
result = session.run([],{"input":input})
print(result[0]) 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值