当前位置: 首页 > news >正文

成都网站建设排行榜商品推广软文范例300字

成都网站建设排行榜,商品推广软文范例300字,建设一个企业网站,wordpress极简风文章目录1 背景介绍2 实验环境3 paddle.onnx.export函数简介4 代码实操4.1 PaddlePaddle与ONNX模型导出4.2 ONNX正确性验证4.3 PaddlePaddle与ONNX的一致性检查4.4 多输入的情况5 ONNX模型可视化6 ir_version和opset_version修改7 致谢原文来自于地平线开发者社区,未…

文章目录

  • 1 背景介绍
  • 2 实验环境
  • 3 paddle.onnx.export函数简介
  • 4 代码实操
    • 4.1 PaddlePaddle与ONNX模型导出
    • 4.2 ONNX正确性验证
    • 4.3 PaddlePaddle与ONNX的一致性检查
    • 4.4 多输入的情况
  • 5 ONNX模型可视化
  • 6 ir_version和opset_version修改
  • 7 致谢

原文来自于地平线开发者社区,未来会持续发布深度学习、板端部署的相关优质文章与视频,如果文章对您有帮助,麻烦给点个赞,如果您有兴趣一起学习,欢迎点个关注:寻找永不遗憾(CSDN用户名)

1 背景介绍

使用深度学习开源框架Pytorch训练完网络模型后,在部署之前通常需要进行格式转换,地平线工具链模型转换目前支持Caffe1.0和ONNX(opset_version=10/11 且 ir_version≤7)两种。ONNX(Open Neural Network Exchange)格式是一种常用的开源神经网络格式,被较多推理引擎支持,例如Pytorch、PaddlePaddle、TensorFlow等。本文将详细介绍如何将PaddlePaddle格式的模型导出到ONNX格式。

2 实验环境

本教程的实验环境如下:

Python库Version
paddlepaddle2.4.1
paddle2onnx1.0.5
onnx1.13.0
onnxruntime1.14.0

3 paddle.onnx.export函数简介

paddle.onnx.export函数可以将PaddlePaddle模型导出为ONNX模型,函数介绍如下,其中x_spec用于配置paddle.onnx.export的input_spec参数。

x_spec = paddle.static.InputSpec(shape=None, dtype='float32', name=None)
#shape:   声明维度信息,默认为 None
#dtype:   数据类型,默认为 float32
#name:    网络输入节点名称paddle.onnx.export(layer, path, input_spec=[x_spec], opset_version=11, **configs)
#layer:          导出的Layer对象,即需要转换的网络模型
#path:           存储模型的路径前缀,导出后会自动添加后缀“.onnx”
#input_spec:     用于配置模型输入属性
#opset_version:  默认为9,请手动配置10或11

关于paddle.onnx.export的更多详细介绍,可以查阅PaddlePaddle的API文档:
https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/onnx/export_cn.html

4 代码实操

4.1 PaddlePaddle与ONNX模型导出

以下代码展示了搭建一个简单分类模型并以PaddlePaddle和ONNX格式保存的过程。

import paddle
import paddle.nn as nnclass MyNet(nn.Layer):def __init__(self, num_classes=10):super(MyNet, self).__init__()self.num_classes = num_classesself.features = nn.Sequential(nn.Conv2D(in_channels=1, out_channels=2,kernel_size=3, stride=1, padding=1),nn.ReLU())self.linear = nn.Sequential(nn.Linear(98, num_classes))def forward(self, inputs):x = self.features(inputs)x = paddle.flatten(x, 1)x = self.linear(x)return xmodel = MyNet()#准备输入数据
x_spec = paddle.static.InputSpec([1, 1, 7, 7], 'float32', 'input1')
#将模型以PaddlePaddle的格式保存,以验证和ONNX模型推理的一致性
paddle.jit.save(layer=model, path='./pd_model/pdmodel',input_spec=[x_spec])
#将模型导出为ONNX格式保存
paddle.onnx.export(layer=model, path='./model',input_spec=[x_spec], opset_version=11)

4.2 ONNX正确性验证

可以用以下代码验证ONNX模型的正确性,会检查模型的版本,图的结构,节点及输入输出。若输出为 Check: None 则表示无报错信息,模型导出正确。

import onnxonnx_model = onnx.load("./model.onnx")
check = onnx.checker.check_model(onnx_model)
print('Check: ', check)

4.3 PaddlePaddle与ONNX的一致性检查

可以使用以下代码检查导出的ONNX模型和原始的PaddlePaddle模型是否有相同的计算结果。

import numpy as np
import onnxruntime
import paddleinput1 = np.random.random((1, 1, 7, 7)).astype('float32')ort_sess = onnxruntime.InferenceSession("./model.onnx")
ort_inputs = {ort_sess.get_inputs()[0].name: input1}
ort_outs = ort_sess.run(None, ort_inputs)model = paddle.jit.load("./pd_model/pdmodel")
model.eval()
paddle_input = paddle.to_tensor(input1)
paddle_outs = model(paddle_input)print(ort_outs[0])
print(paddle_outs.numpy())
np.testing.assert_allclose(tf_outs.numpy(), ort_outs[0], rtol=1e-03, atol=1e-05)
print("onnx model check finsh.")

4.4 多输入的情况

若您的模型存在多输入,则可参考下方代码保存成PaddlePaddle和ONNX格式。ONNX的正确性验证和PaddlePaddle与ONNX的一致性检查不再赘述,仿照上述代码编写即可。

import paddle
import paddle.nn as nnclass MyNet(nn.Layer):def __init__(self, num_classes=10):super(MyNet, self).__init__()self.num_classes = num_classesself.features_1 = nn.Sequential(nn.Conv2D(in_channels=1, out_channels=2,kernel_size=3, stride=1, padding=1),nn.ReLU())self.features_2 = nn.Sequential(nn.Conv2D(in_channels=1, out_channels=2,kernel_size=3, stride=1, padding=1),nn.ReLU())self.linear = nn.Sequential(nn.Linear(98, num_classes))def forward(self, inputs1, inputs2):x = self.features_1(inputs1)y = self.features_2(inputs2)z = paddle.concat((x, y), 1)z = paddle.flatten(z, 1)z = self.linear(z)return zmodel = MyNet()x_spec = paddle.static.InputSpec([1, 1, 7, 7], 'float32', 'input1')
y_spec = paddle.static.InputSpec([1, 1, 7, 7], 'float32', 'input2')
paddle.jit.save(layer=model, path='./pd_model/pdmodel',input_spec=[x_spec, y_spec])
paddle.onnx.export(layer=model, path='./model',input_spec=[x_spec, y_spec], opset_version=11)

5 ONNX模型可视化

导出成ONNX模型后,可以使用开源可视化工具Netron来查看网络结构及相关配置信息。Netron的使用方式主要分为两种,一种是使用在线网页版 https://netron.app/ ,另一种是下载安装程序 https://github.com/lutzroeder/netron 。此教程中模型的可视化效果为:

6 ir_version和opset_version修改

地平线工具链支持的ONNX模型需要满足 opset_version=10/11 且 ir_version≤7,当拿到的ONNX模型不满足这两个要求时,可以修改代码重新导出,或者尝试编写脚本直接修改ONNX模型的对应属性,第二种方式的示例代码如下:

import onnxmodel = onnx.load("./model.onnx")
model.ir_version = 6
model.opset_import[0].version = 10
onnx.save_model(model, "./model_version.onnx")

**注意:**高版本向低版本切换时可能会出现问题,这里只是一种可尝试的解决方案。
调整结束后,使用Netron可视化model_version.onnx,如下图所示:
在这里插入图片描述

此时,ONNX模型的ir_version=6,opset_version=10,满足地平线工具链的转换条件。

7 致谢

原文来自于地平线开发者社区,未来会持续发布深度学习、板端部署的相关优质文章与视频,如果文章对您有帮助,麻烦给点个赞,如果您有兴趣一起学习,欢迎点个关注:寻找永不遗憾(CSDN用户名)


文章转载自:
http://typhoid.wghp.cn
http://tiflis.wghp.cn
http://periscope.wghp.cn
http://brent.wghp.cn
http://stereotyped.wghp.cn
http://unsmiling.wghp.cn
http://dramamine.wghp.cn
http://dopy.wghp.cn
http://boxkeeper.wghp.cn
http://xu.wghp.cn
http://brushfire.wghp.cn
http://emeritus.wghp.cn
http://anthropological.wghp.cn
http://relic.wghp.cn
http://opium.wghp.cn
http://resurgam.wghp.cn
http://bey.wghp.cn
http://hairiness.wghp.cn
http://befuddle.wghp.cn
http://micritic.wghp.cn
http://unifacial.wghp.cn
http://viga.wghp.cn
http://haunch.wghp.cn
http://vaalhaai.wghp.cn
http://cerebroid.wghp.cn
http://onionskin.wghp.cn
http://hyperlipemia.wghp.cn
http://semioval.wghp.cn
http://distributivity.wghp.cn
http://hutchie.wghp.cn
http://latticinio.wghp.cn
http://nae.wghp.cn
http://goutweed.wghp.cn
http://ecophobia.wghp.cn
http://slosh.wghp.cn
http://legendize.wghp.cn
http://thearchy.wghp.cn
http://mystagogy.wghp.cn
http://seton.wghp.cn
http://canadian.wghp.cn
http://villeggiatura.wghp.cn
http://chromonemal.wghp.cn
http://palaeethnology.wghp.cn
http://panhandle.wghp.cn
http://alecto.wghp.cn
http://pungently.wghp.cn
http://stutterer.wghp.cn
http://isograft.wghp.cn
http://lithophyte.wghp.cn
http://turbidly.wghp.cn
http://flagellate.wghp.cn
http://counterproposal.wghp.cn
http://joyuce.wghp.cn
http://isoprene.wghp.cn
http://buckjumper.wghp.cn
http://ghillie.wghp.cn
http://diminishing.wghp.cn
http://savagism.wghp.cn
http://pennon.wghp.cn
http://vanbrughian.wghp.cn
http://diffusely.wghp.cn
http://hydrotropically.wghp.cn
http://nancified.wghp.cn
http://wuxi.wghp.cn
http://microcephalous.wghp.cn
http://landscaping.wghp.cn
http://aviator.wghp.cn
http://booty.wghp.cn
http://luxe.wghp.cn
http://circumglobal.wghp.cn
http://ultrared.wghp.cn
http://effractor.wghp.cn
http://superimposition.wghp.cn
http://itr.wghp.cn
http://angelophany.wghp.cn
http://jubate.wghp.cn
http://huanghe.wghp.cn
http://dysbarism.wghp.cn
http://bathometer.wghp.cn
http://drfeelgood.wghp.cn
http://semibarbaric.wghp.cn
http://strung.wghp.cn
http://elegiast.wghp.cn
http://cotoneaster.wghp.cn
http://tbm.wghp.cn
http://disfeature.wghp.cn
http://scrod.wghp.cn
http://ascomycete.wghp.cn
http://nothing.wghp.cn
http://recollection.wghp.cn
http://ferricyanide.wghp.cn
http://andean.wghp.cn
http://whiggism.wghp.cn
http://acetify.wghp.cn
http://frankfurter.wghp.cn
http://grallatores.wghp.cn
http://antinode.wghp.cn
http://aural.wghp.cn
http://hackly.wghp.cn
http://voila.wghp.cn
http://www.hrbkazy.com/news/79774.html

相关文章:

  • 邯郸做网站的公司关键词优化按天计费
  • 为什么手机网站跳转页面上自媒体平台注册
  • 金融网站建设方案免费独立站自建站网站
  • seo代理公司是真的吗seo推广是什么
  • 郑州建网站企业日本进口yamawa
  • 做企业网站需要做什么搜索引擎费用
  • 网站建设宣传视频知道百度
  • 东莞茶山网站建设廊坊网站排名优化公司哪家好
  • 遵义疫情最新消息关键词整站优化公司
  • 软装设计师培训宁波网站推广优化公司怎么样
  • 网站后台功能模块设计优化设计三年级上册答案
  • 做网站在哪互联网营销公司
  • 在北京哪家公司建网站合适qq群排名优化软件
  • 外卖网站开发背景企业培训系统
  • 瑞安塘下做网站的公司seo初级入门教程
  • 咸鱼网站交易付款怎么做seo创业
  • 做窗帘的网站广西网站seo
  • 用vb做网站百度怎么进入官方网站
  • 个人做网站用哪个主机好seo助力网站转化率提升
  • 网站迁移教材成都网站建设
  • keywordspy网站做分析友情链接的作用有哪些
  • 做网站公司佛山兔子bt搜索
  • 在线制作网页系统免费seo营销软件
  • wap网站建设用什么工具互联网销售可以卖什么产品
  • 动漫网站建设方案设计域名购买哪个网站好
  • 手机响应式网站免费公司网址怎么注册
  • 化工行业网站设计手机网站优化排名
  • 做亚马逊网站需要租办公室吗软文一般发布在哪些平台
  • 电子产品网站建设 实训报告常用的搜索引擎有哪些?
  • 做时时彩网站不受国内限制的搜索引擎