首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Onnxruntime错误9:未实现LeakyRelu

Onnxruntime错误9:未实现LeakyRelu
EN

Stack Overflow用户
提问于 2021-06-18 06:23:25
回答 1查看 145关注 0票数 0

我已经将一个简单的pytorch模型转换为onnx格式,并试图通过onnx在单独的文件中加载和评估该模型,但失败了。它给出了错误消息:

代码语言:javascript
复制
NotImplemented: [ONNXRuntimeError] : 9 : NOT_IMPLEMENTED : Could not find an implementation for the node LeakyRelu_1:LeakyRelu(6)

但是文档清楚地列出了leakyrelu运算符:https://github.com/microsoft/onnxruntime/blob/master/docs/OperatorKernels.md

转换的脚本非常简单。

代码语言:javascript
复制
import torch.onnx
import torch

torch.set_default_dtype(torch.float64)

Model = torch.load("Test.pth")
inputs = torch.randn(1,2)
torch.onnx.export(Model,inputs, "Test.onnx", export_params=True)

加载转换后的模型的脚本也非常简单,

代码语言:javascript
复制
import onnx
import onnxruntime as rt
import numpy as np


onnx_model = onnx.load("Test.onnx")
onnx.checker.check_model(onnx_model)

#print(onnx_model.graph)
print("[Graph Input] name: {}, shape: {}".format(onnx_model.graph.input[0].name,
                                                 [dim.dim_value for dim in onnx_model.graph.input[0].type.tensor_type.shape.dim]))
print("[Graph Output] name: {}, shape: {}".format(onnx_model.graph.output[0].name,
                                                  [dim.dim_value for dim in onnx_model.graph.output[0].type.tensor_type.shape.dim]))


print(onnx.helper.printable_graph(onnx_model.graph))

sess = rt.InferenceSession("Test.onnx")

打印的图表是

代码语言:javascript
复制
graph torch-jit-export (
  %input.1[DOUBLE, 1x2]
) initializers (
  %0.weight[DOUBLE, 228x2]
  %0.bias[DOUBLE, 228]
  %2.weight[DOUBLE, 70x228]
  %2.bias[DOUBLE, 70]
  %4.weight[DOUBLE, 1x70]
  %4.bias[DOUBLE, 1]
) {
  %7 = Gemm[alpha = 1, beta = 1, transB = 1](%input.1, %0.weight, %0.bias)
  %8 = LeakyRelu[alpha = 0.00999999977648258](%7)
  %9 = Gemm[alpha = 1, beta = 1, transB = 1](%8, %2.weight, %2.bias)
  %10 = LeakyRelu[alpha = 0.00999999977648258](%9)
  %11 = Gemm[alpha = 1, beta = 1, transB = 1](%10, %4.weight, %4.bias)
  return %11
}

我想知道leakyrelu是否已经实现,或者我只是在转换过程中遗漏了一些东西。谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2021-06-29 03:13:25

根据文档https://github.com/microsoft/onnxruntime/blob/master/docs/OperatorKernels.md,LeakyRelu只为float (32位)类型实现,而您有double (64位)。

您可以尝试在PyTorch代码中的LeakyRely之前将其转换为32位浮点数。也许会在ONNX Runtime Github上创建一个问题,以增加对LeakyRelu的双重支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68027199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档