将.onnx文件加载到javascript中

时间:2019-03-11 21:15:26

标签: onnx

我正在尝试将.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)

1 个答案:

答案 0 :(得分:0)

请参阅ONNX.js的list of supported operators,它只是所有ONNX运算符的一部分。 ReduceL2不在列表中,但是有趣的是ReduceSumSquare在列表中,这似乎是相同的。 (?)

不等待它们在ONXX.js中实现ReduceL2,而是尝试ReduceSumSquare或尝试(逐点)对参数进行平方,然后调用ReduceSum。

同样,您可以定义自己的ReduceL2()函数来调用上述两个操作之一。