Привязка TensforflowJS nodejs, невозможно установить собственный оптимизатор

Я только начинаю работать с tenorflowjs и tenorflow в целом, и я столкнулся с проблемой, которую не могу решить. Я пытаюсь изменить скорость обучения для оптимизатора, но как только я использую настраиваемый оптимизатор, я получаю следующую ошибку:

User-defined optimizer must be an instance of tf.Optimizer

чтобы создать свою модель, я делаю следующее (взято из документации здесь):

const model = tf.sequential();
  model.add(tf.layers.dense({units:1, inputShape:[11]}));
  model.compile({
    optimizer: tf.train.sgd(0.000001),
    loss: 'meanSquaredError'
  });

так что, насколько я вижу, все должно работать. И если я просто передам оптимизатор по умолчанию sgd, он действительно сработает.

model.compile({loss:'meanSquaredError', optimizer:'sgd'});

и документы в https://js.tensorflow.org/api/latest/index.html#train.sgd также подразумевают, что первый фрагмент кода должен возвращать SGDOptimizer.

Есть ли у кого-нибудь идеи, что я делаю не так?

Я запускаю узел V8 со следующим пакетом tensorflow

"@tensorflow/tfjs-core": "^0.14.2",
"@tensorflow/tfjs-node": "^0.1.21",

Если я создам оптимизатор и сохраню его в отдельной переменной. В console.info этого var выдает следующее:

SGDOptimizer {
  learningRate: 0.000001,
  c: 
   Tensor {
     isDisposedInternal: false,
     shape: [],
     dtype: 'float32',
     size: 1,
     strides: [],
     dataId: {},
     id: 4,
     rankType: '0' } }

Итак, похоже, он инициализирован

Вы используете конкретную привязку node js? Если нет, вы можете рассмотреть возможность удаления привязки tfjs-node

edkeveked 17.12.2018 19:11

Я не использовал конкретную привязку, у меня создалось впечатление, что ее нужно запускать в среде на стороне сервера, а не в браузере. Но даже при удалении это все равно не работает

TommyBs 17.12.2018 19:15

Вот рабочий код с использованием tf.train.sgd: repl.it/@kedevked/tensorflowjs-with-node

edkeveked 17.12.2018 19:17

даже с вашим модельным кодом я получаю точно такую ​​же ошибку

TommyBs 17.12.2018 19:19

Код запущен. Я не вижу ошибок. Не могли бы вы дать ссылку со своим кодом, который выводит ошибку?

edkeveked 17.12.2018 19:23

Даже если я просто скопирую и вставлю ваш точный код в новый файл, я получу ту же ошибку

TommyBs 17.12.2018 19:40
Udacity Nanodegree Capstone Project: Классификатор пород собак
Udacity Nanodegree Capstone Project: Классификатор пород собак
Вы можете ознакомиться со скриптами проекта и данными на github .
1
6
127
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не должны напрямую импортировать tfjs-core в свой package.json. Если вы импортируете только tfjs-node, он импортирует правильную версию tfjs-core.

Проблема в том, что у вас двойная зависимость (которую мы исправим).

Ах, хорошо, спасибо, не знаю, почему у меня была двойная зависимость, возможно, это потому, что я установил основной пакет, а затем ядро, поэтому выполнил несколько инструкций по установке. Хотя теперь, если я просто попытаюсь установить @ tensorflow / tfjs-node, я получаю сообщение об ошибке ... Не могу найти модуль https-proxy-agent - хотя установка его отдельно, похоже, сработала

TommyBs 17.12.2018 21:48

В следующем выпуске вам нужно будет только добавить пакет tfjs-node в качестве зависимости и потребовать через него tf. Вот PR, который это исправляет: github.com/tensorflow/tfjs-node/pull/187

Nikhil 26.12.2018 21:26

Другие вопросы по теме