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

php微网站开发建设内容管理网站的目的

php微网站开发,建设内容管理网站的目的,博山信息港,做网站柳州在实际部署模型时有时可能会遇到想用的算子无法导出onnx#xff0c;但实际部署的框架是支持该算子的。此时可以通过自定义onnx算子的方式导出onnx模型#xff08;注#xff1a;自定义onnx算子导出onnx模型后是无法使用onnxruntime推理的#xff09;。下面给出个具体应用中的…在实际部署模型时有时可能会遇到想用的算子无法导出onnx但实际部署的框架是支持该算子的。此时可以通过自定义onnx算子的方式导出onnx模型注自定义onnx算子导出onnx模型后是无法使用onnxruntime推理的。下面给出个具体应用中的示例需要导出pytorch的affine_grid算子但在pytorch的2.0.1版本中又无法正常导出该算子故可通过如下自定义算子代码导出。 import torch import torch.nn as nn import torch.nn.functional as F from torch.autograd import Function from torch.onnx import OperatorExportTypesclass CustomAffineGrid(Function):staticmethoddef forward(ctx, theta: torch.Tensor, size: torch.Tensor):grid F.affine_grid(thetatheta, sizesize.cpu().tolist())return gridstaticmethoddef symbolic(g: torch.Graph, theta: torch.Tensor, size: torch.Tensor):return g.op(AffineGrid, theta, size)class MyModel(nn.Module):def __init__(self) - None:super().__init__()def forward(self, x: torch.Tensor, theta: torch.Tensor, size: torch.Tensor):grid CustomAffineGrid.apply(theta, size)x F.grid_sample(x, gridgrid, modebilinear, padding_modezeros)return xdef main():with torch.inference_mode():custum_model MyModel()x torch.randn(1, 3, 224, 224)theta torch.randn(1, 2, 3)size torch.as_tensor([1, 3, 512, 512])torch.onnx.export(modelcustum_model,args(x, theta, size),fcustom.onnx,input_names[input0_x, input1_theta, input2_size],output_names[output],dynamic_axes{input0_x: {2: h0, 3: w0},output: {2: h1, 3: w1}},opset_version16,operator_export_typeOperatorExportTypes.ONNX_FALLTHROUGH)if __name__ __main__:main() 在上面代码中通过继承torch.autograd.Function父类的方式实现导出自定义算子继承该父类后需要用户自己实现forward以及symbolic两个静态方法其中forward方法是在pytorch正常推理时调用的函数而symbolic方法是在导出onnx时调用的函数。对于forward方法需要按照正常的pytorch语法来实现其中第一个参数必须是ctx但对于当前导出onnx场景可以不用管它后面的参数是实际自己传入的参数。对于symbolic方法的第一个必须是g后面的参数任为实际自己传入的参数然后通过g.op方法指定具体导出自定义算子的名称以及输入的参数注上面示例中传入的都是Tensor所以可以直接传入对与非Tensor的参数可见下面一个示例。最后在使用时直接调用自己实现类的apply方法即可。使用netron打开自己导出的onnx文件可以看到如下所示网络结构。 有时按照使用的推理框架导出自定义算子时还需要设置一些参数非Tensor那么可以参考如下示例例如要导出int型的参数k那么可以通过传入k_i来指定要导出float型的参数scale那么可以通过传入scale_f来指定要导出string型的参数clockwise那么可以通过传入clockwise_s来指定 import torch import torch.nn as nn import torch.nn.functional as F from torch.autograd import Function from torch.onnx import OperatorExportTypesclass CustomRot90AndScale(Function):staticmethoddef forward(ctx, x: torch.Tensor):x torch.rot90(x, k1, dims(3, 2)) # clockwise 90x * 1.2return xstaticmethoddef symbolic(g: torch.Graph, x: torch.Tensor):return g.op(Rot90AndScale, x, k_i1, scale_f1.2, clockwise_syes)class MyModel(nn.Module):def __init__(self) - None:super().__init__()def forward(self, x: torch.Tensor):return CustomRot90AndScale.apply(x)def main():with torch.inference_mode():custum_model MyModel()x torch.randn(1, 3, 224, 224)torch.onnx.export(modelcustum_model,args(x,),fcustom_rot90.onnx,input_names[input],output_names[output],dynamic_axes{input: {2: h0, 3: w0},output: {2: w0, 3: h0}},opset_version16,operator_export_typeOperatorExportTypes.ONNX_FALLTHROUGH)if __name__ __main__:main() 使用netron打开自己导出的onnx文件可以看到如下所示信息。
http://www.hkea.cn/news/14377406/

相关文章:

  • 做商城网站要请程序员吗英国做电商网站有哪些
  • 制作一个交易平台网站沧州网站建设报价
  • 自己做网站买东西招标网站有哪些
  • 做网站的公司在哪纹身网站设计
  • 网站运营实训报告总结图片制作在线生成器免费版
  • 如何实现网站建设服务企业宣传册模板下载
  • 哪里有网站开发服务器培训网站建设方案说明书
  • 黑龙江骏域建设网站专家福州网站建设金森
  • 上海移动官网网站建设可信网站的认证
  • 网站怎么做第三方登录青海seo关键词排名优化工具
  • 东莞网站建设和制作开发定制手游游戏
  • 兰州网站优化排名邮箱下不了wordpress
  • 网站的类型及特点如何制作自己的网站教程
  • p2p借贷网站开发 论文企业建网站的案例
  • 新网备案成功了怎么做网站青海西宁高端网站建设
  • 交友软件关键词优化排名有哪些牛霸天的软件1
  • 网站建设英文翻译网页设计尺寸pc端
  • 网站上做推广室内设计师简介
  • 手机网站怎么优化网站群建设优点
  • 上海网站推广广告大连百度推广开户
  • 个人公司网站建设答辩wordpress好用的会员插件
  • 艺梵科技 网站建设网站的设计与制作论文题目
  • 网站整体风格设计企业网站做的好的有什么公司
  • 郑州网站优化托管关于公司申请建设门户网站的请示
  • 重庆市建设工程造价站做的网站图片不显示
  • 如何从零开始做网站丝芭传媒有限公司
  • 登封做网站优化wordpress关闭邮箱验证码
  • 信息设计网站网站建设金思扬网络
  • 山东建设厅官方网站二建报名路得威网站谁做的
  • 那个可以做棋牌网站维护公司