Не могу загрузить обученную модель с Tensorflow. js - PullRequest
1 голос
/ 30 апреля 2020

моя модель (tf.keras.Sequential) прошла обучение по Python, и я преобразовал ее в формат TF. js Layers, используя tf js .converters.save_keras_model (). Я создал сервер в папке (которая содержит файлы * .bin и 'model. json'), используя 'http-server' в cmd. После этого я запускаю этот код для загрузки модели:

(async () => {
        const model = await tf.loadLayersModel('http://127.0.0.1:8080/model.json');
        console.log('done');
    })();

Это не работает для меня, эти 3 ошибки появляются в моей консоли:

Access to fetch at 'http://127.0.0.1:8080/model.json' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
GET http://127.0.0.1:8080/model.json net::ERR_FAILED
Uncaught (in promise) Error: Request for http://127.0.0.1:8080/model.json failed due to error: TypeError: Failed to fetch
    at tf.min.js:2

Понятия не имею, как это исправить.

1 Ответ

0 голосов
/ 30 апреля 2020

Так что это проблема с CORS (Cross Origin Resource Sharing) - вам нужно больше, чем просто веб-сервер для обслуживания файлов.

Для любых stati c файлов (таких как bin и * 1026) * файлы, которые у вас есть), которые вы хотите использовать для разных доменов на веб-сайте и т. д. c вам необходимо установить правильный заголовок для этих файлов веб-сервером, чтобы браузер знал, что его можно использовать на таких сайтах.

Это связано с веб-безопасностью во всех доменах, и в то же время она привлекает внимание многих людей. Не уверен, какой веб-сервер вы используете, но если вы используете Express с Node.js, проверьте этот простой учебник:

https://enable-cors.org/server_expressjs.html

или этот lib :

https://medium.com/@alexishevia / using-cors-in- express -cac7e29b005b

Обратите внимание на часть Allow-Origin, в которой вам нужно установить домен, который вы планирую использовать его на. Вы также можете использовать подстановочный знак *, чтобы разрешить всем доменам, если вы хотите, чтобы кто-либо мог использовать эти файлы на своих сайтах, тоже без проблем.

Да, и забавный факт, если вы не хотите иметь дело с веб-сервером попробуйте Glitch.com, который позволяет вам размещать экспериментальные проекты и загружать ресурсы, если это просто для удовольствия - он правильно устанавливает все заголовки CORS, прост в использовании и создает прототипы. https://glitch.com/@TensorFlowJS

...