#node.js #tensorflow #tensorflowjs-converter
#node.js #tensorflow #tensorflowjs-конвертер
Вопрос:
У меня есть предварительно обученные модели 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'
Системная информация
Node v10.15.3 и TensorflowJs v1.0.1
Комментарии:
1. Зависимости Package.json ` «dependencies»: { «@tensorflow/tfjs»: «^1.0.1», «@tensorflow/tfjs-node»: «^1.0.1», «node-fetch»: «^2.3.0» }`
Ответ №1:
Заменить
const tf = require('@tensorflow/tfjs');
С помощью
const tf = require('@tensorflow/tfjs-node');
И удалите строку
require('@tensorflow/tfjs-node');
Затем, если вы загружаете модель из локальной файловой системы, добавьте ‘file://’ в начало аргумента, который вы предоставляете loadLayersModel().
И это должно сработать
Ответ №2:
Первая ошибка очевидна: требуется абсолютный URL ( '/model/model.json'
), но вы вводите ему относительный URL ( 'model/model.json'
).
Вторая ошибка также довольно понятна, ошибка сообщает вам, что предыдущая выданная ошибка не была перехвачена (следовательно Unhandled
).
Для последнего, пожалуйста, смотрите https://github.com/tensorflow/tfjs/issues/779 или https://github.com/tensorflow/tfjs/issues/622
Я думаю, это связано с тем, что смешиваются CUDA и не-CUDA вещи. Сначала проверьте свой packages.json
.
Комментарии:
1. Я изменил абсолютный URL
UnhandledPromiseRejectionWarning: Error: Request for /model/decoder-model/model.json failed due to error: TypeError: Only absolute URLs are supported
2. @n00b lol ок, а затем вы правильно попробовали полный URL, что это вам дало
3. Я опубликовал ошибку в предыдущем комментарии. Это то, что вы ищете?
4. @n00b нет, в чем ошибка, когда вы вводите полный URL, начинающийся с http (ов).