我正在尝试将.onnx文件加载到javascript会话中。我收到的错误是TypeError:无法识别的运算符'ReduceL2',但是此链接https://github.com/onnx/onnx/blob/master/docs/Operators.md表示onnx支持'ReduceL2'。我猜想这可能与webGL不支持它有关。是否有解决方法或更好的方法来在浏览器中运行模型?对javascript非常新。
JavaScript代码:
async function runExample() {
// Create an ONNX inference session with WebGL backend.
const session = new onnx.InferenceSession({ backendHint: 'webgl' });
// Load an ONNX model. This model is Resnet50 that takes a 1*3*224*224 image and classifies it.
await session.loadModel("./pathtomodel");
引发错误:
Uncaught (in promise) TypeError: unrecognized operator 'ReduceL2'
at t.createOperator (session-handler.ts:222)
at t.resolve (session-handler.ts:86)
at e.initializeOps (session.ts:252)
at session.ts:92
at t.event (instrument.ts:294)
at e.initialize (session.ts:81)
at e.<anonymous> (session.ts:63)
at inference-session-impl.ts:16
at Object.next (inference-session-impl.ts:16)
at a (inference-session-impl.ts:16)
答案 0 :(得分:0)
请参阅ONNX.js的list of supported operators,它只是所有ONNX运算符的一部分。 ReduceL2不在列表中,但是有趣的是ReduceSumSquare在列表中,这似乎是相同的。 (?)
不等待它们在ONXX.js中实现ReduceL2,而是尝试ReduceSumSquare或尝试(逐点)对参数进行平方,然后调用ReduceSum。
同样,您可以定义自己的ReduceL2()函数来调用上述两个操作之一。