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

做电影网站如何赚钱兼容模式网站错位

做电影网站如何赚钱,兼容模式网站错位,重庆网站建设狐灵,饰品网站建设文章目录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 致谢原文来自于地平线开发者社区#xff0c;未… 文章目录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_version10/11 且 ir_version≤7)两种。ONNX(Open Neural Network Exchange)格式是一种常用的开源神经网络格式被较多推理引擎支持例如Pytorch、PaddlePaddle、TensorFlow等。本文将详细介绍如何将PaddlePaddle格式的模型导出到ONNX格式。 2 实验环境 本教程的实验环境如下 Python库Versionpaddlepaddle2.4.1paddle2onnx1.0.5onnx1.13.0onnxruntime1.14.0 3 paddle.onnx.export函数简介 paddle.onnx.export函数可以将PaddlePaddle模型导出为ONNX模型函数介绍如下其中x_spec用于配置paddle.onnx.export的input_spec参数。 x_spec paddle.static.InputSpec(shapeNone, dtypefloat32, nameNone) #shape: 声明维度信息默认为 None #dtype: 数据类型默认为 float32 #name: 网络输入节点名称paddle.onnx.export(layer, path, input_spec[x_spec], opset_version11, **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_classes10):super(MyNet, self).__init__()self.num_classes num_classesself.features nn.Sequential(nn.Conv2D(in_channels1, out_channels2,kernel_size3, stride1, padding1),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(layermodel, path./pd_model/pdmodel,input_spec[x_spec]) #将模型导出为ONNX格式保存 paddle.onnx.export(layermodel, path./model,input_spec[x_spec], opset_version11)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], rtol1e-03, atol1e-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_classes10):super(MyNet, self).__init__()self.num_classes num_classesself.features_1 nn.Sequential(nn.Conv2D(in_channels1, out_channels2,kernel_size3, stride1, padding1),nn.ReLU())self.features_2 nn.Sequential(nn.Conv2D(in_channels1, out_channels2,kernel_size3, stride1, padding1),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(layermodel, path./pd_model/pdmodel,input_spec[x_spec, y_spec]) paddle.onnx.export(layermodel, path./model,input_spec[x_spec, y_spec], opset_version11)5 ONNX模型可视化 导出成ONNX模型后可以使用开源可视化工具Netron来查看网络结构及相关配置信息。Netron的使用方式主要分为两种一种是使用在线网页版 https://netron.app/ 另一种是下载安装程序 https://github.com/lutzroeder/netron 。此教程中模型的可视化效果为 6 ir_version和opset_version修改 地平线工具链支持的ONNX模型需要满足 opset_version10/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_version6opset_version10满足地平线工具链的转换条件。 7 致谢 原文来自于地平线开发者社区未来会持续发布深度学习、板端部署的相关优质文章与视频如果文章对您有帮助麻烦给点个赞如果您有兴趣一起学习欢迎点个关注寻找永不遗憾(CSDN用户名)
http://www.w-s-a.com/news/313685/

相关文章:

  • html5 微信网站主流开发技术标准网站搭建费用
  • 加强统计局网站的建设和管理广州微信网站建设价格
  • 华宁网站建设设计公司 网站
  • 简历网站免费怎么查在哪个网站做的备案
  • 响应式网站 价格网站用哪些系统做的比较好用
  • 高端网站案例360做的网站
  • 瑞安地区建设网站公众号开发者工具是干嘛的
  • 请解释网站开发的主要流程.wordpress主体上传
  • 网站方案组成要素饰品公司网站建设方案
  • 网站改版被降权赣州景文网络科技有限公司
  • 吉林省网站建设推广图片模版
  • 如何做网站热力图佛山 网站关键词优化
  • 个人网站建设论文中期报告申报网站建设理由 模板
  • 岫岩做网站软件开发和app开发的区别
  • 邯郸质量一站式服务平台上线如何做国外销售网站
  • 内蒙古工程建设协会网站sem优化策略
  • Linux网站建设总结建设电子商务平台
  • 公司网站背景图片课程网站如何建设
  • 用js做简单的网站页面互联网技术对人力资源管理的影响有哪些
  • 银川做网站贵德县wap网站建设公司
  • 深圳网站建设zvge山西省煤炭基本建设局网站
  • 佛山网页网站设计线上怎么做推广和宣传
  • 多个域名绑定同一个网站案例
  • 建设网站都需要准备什么代理加盟微信网站建设
  • 网站备案没有了wordpress 添加按钮
  • 湖南建设银行宣传部网站福田蒙派克空调滤芯安装位置图
  • wap网站搜索wordpress工作室模板
  • 青岛金融网站建设如何提交网站地图
  • 制作简单门户网站步骤网站建设论文的摘要
  • 可以直接进入网站的正能量照片学做静态网站