Загрузка в файл .onnx в javascript - PullRequest
1 голос
/ 12 марта 2019

Я пытаюсь загрузить файл .onnx в сеанс JavaScript.Я получаю сообщение об ошибке TypeError: нераспознанный оператор «ReduceL2», но эта ссылка https://github.com/onnx/onnx/blob/master/docs/Operators.md говорит о том, что «ReduceL2» поддерживается onnx.Я предполагаю, что это может быть связано с тем, что 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 голосов
/ 15 марта 2019

См. Список поддерживаемых операторов в ONNX.js *1002*, который является только подмножеством всех операторов ONNX.ReduceL2 нет в списке, но интересно, что ReduceSumSquare находится в списке, что кажется тем же.(?)

Вместо того, чтобы ждать, пока они реализуют ReduceL2 в ONXX.js, попробуйте либо ReduceSumSquare, либо попробуйте (точечно) возвести в квадрат ваш аргумент, а затем вызвать ReduceSum.

Аналогично, вы можете определитьваша собственная функция ReduceL2 (), которая вызывает любую из двух вышеуказанных операций.

...