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

飞凡 做电商网站沈阳市和平区网站建设

飞凡 做电商网站,沈阳市和平区网站建设,网站建设注册,湖南省郴州市汝城县在实际部署模型时有时可能会遇到想用的算子无法导出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.pierceye.com/news/845065/

相关文章:

  • 网站首页欣赏网站模板 wordpress带会员系统
  • 关于音乐的个人网站wordpress 报名表单
  • 国内做的好看的网站设计wordpress 与现有sso
  • 通辽网站建设罗湖中心区做网站
  • 宁波网站建设哪家快湛江专业的建站托管
  • 四川省城乡住房建设部网站首页自建wordpress 客户端
  • 番禺做网站价格百度app打开
  • 扬中网站推广导流非国产手机浏览器
  • 外国网站英语要求建立网站就是制作网页
  • 电商网站建设与运营实训可以做网站的app
  • 深圳南山区网站建设公司站长工具seo综合查询 分析
  • 互粉的网站是怎么做的网站建设公司利润怎么样
  • 个人网站平台搭建咸阳企业做网站
  • 租用外国服务器网站网站建设电子商务论文选题方向
  • 网站建设那种语言好wordpress 首页添加链接
  • NET开发网站开发工程师招聘潍坊市网站建设公司
  • 自己开发网站怎么盈利开发游戏需要多少资金
  • 先域名 还是先做网站塘厦
  • 企业公众号以及网站建设wordpress 代码块样式
  • 网站源码搭建教程大同建设银行保安招聘网站
  • 无锡网站设wordpress营销模板
  • 建站哪个好一点wordpress直达按钮
  • 卢松松网站的百度广告怎么做的小程序开发成都公司
  • 导航网站头部代码android开发者官网
  • 网站设计需求分析报告做漫画的网站有哪些
  • 做什么网站吸引人sinaapp wordpress 固定链接
  • 东莞做网站怎么样搜狐综合小时报2022113011
  • 校园网站的意义融资渠道
  • 做网站上海公司自己制作一个网站需要什么软件
  • 铜川做网站电话app开发程序