Как загрузить преобразованную предварительно обученную модель keras в Tensorflow.js, используя Node.js? - PullRequest
2 голосов
/ 14 марта 2019

У меня есть предварительно обученные модели keras, которые у меня есть с помощью TensorflowJs Converter.Я пытаюсь загрузить их в следующем скрипте

(index.js)

const tf = require('@tensorflow/tfjs');

require('@tensorflow/tfjs-node');
global.fetch = require('node-fetch')

const model = tf.loadLayersModel(
     'model/model.json');

При выполнении node index.js

(node:28543) UnhandledPromiseRejectionWarning: Error: Request for model/decoder-model/model.json failed due to error: TypeError: Only absolute URLs are supported
я получаю следующую ошибку

и

(node:28543) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 3)
(node:28543) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Я также пробовал это

const model = tf.loadLayersModel(
     'https://storage.googleapis.com/tfjs-models/tfjs/iris_v1/model.json');

Но здесь я получаю

(node:28772) UnhandledPromiseRejectionWarning: Error: Found more than one (2) load handlers for URL 'https://storage.googleapis.com/tfjs-models/tfjs/iris_v1/model.json'

Информация о системе

Узел v10.15.3 и TensorflowJs v1.0.1

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Заменить

const tf = require('@tensorflow/tfjs'); 

С

const tf = require('@tensorflow/tfjs-node');

И удалить строку

require('@tensorflow/tfjs-node');

Затем, если вы загружаете модель из локальной файловой системы, добавьте 'file: //' в начало аргумента, который вы передаете loadLayersModel ().

И это должно работать

0 голосов
/ 14 марта 2019

Первая ошибка ясна, она хочет абсолютный URL ('/model/model.json'), но вы указываете его относительно ('model/model.json').

Вторая ошибка также довольно ясна, ошибка говорит вам, что бывшая сгенерированная ошибка не была перехвачена (поэтому Unhandled).

Для последнего, пожалуйста, смотрите https://github.com/tensorflow/tfjs/issues/779 или https://github.com/tensorflow/tfjs/issues/622

Я думаю, это потому, что смешиваются вещи CUDA и не-CUDA. Сначала проверьте packages.json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...