Я только начинаю работать с 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' } }
Итак, похоже, он инициализирован
Я не использовал конкретную привязку, у меня создалось впечатление, что ее нужно запускать в среде на стороне сервера, а не в браузере. Но даже при удалении это все равно не работает
Вот рабочий код с использованием tf.train.sgd: repl.it/@kedevked/tensorflowjs-with-node
даже с вашим модельным кодом я получаю точно такую же ошибку
Код запущен. Я не вижу ошибок. Не могли бы вы дать ссылку со своим кодом, который выводит ошибку?
Даже если я просто скопирую и вставлю ваш точный код в новый файл, я получу ту же ошибку
Вы не должны напрямую импортировать tfjs-core в свой package.json. Если вы импортируете только tfjs-node, он импортирует правильную версию tfjs-core.
Проблема в том, что у вас двойная зависимость (которую мы исправим).
Ах, хорошо, спасибо, не знаю, почему у меня была двойная зависимость, возможно, это потому, что я установил основной пакет, а затем ядро, поэтому выполнил несколько инструкций по установке. Хотя теперь, если я просто попытаюсь установить @ tensorflow / tfjs-node, я получаю сообщение об ошибке ... Не могу найти модуль https-proxy-agent - хотя установка его отдельно, похоже, сработала
В следующем выпуске вам нужно будет только добавить пакет tfjs-node в качестве зависимости и потребовать через него tf. Вот PR, который это исправляет: github.com/tensorflow/tfjs-node/pull/187
Вы используете конкретную привязку node js? Если нет, вы можете рассмотреть возможность удаления привязки tfjs-node