Новичок: не понимаю форму [,1] на Tensorflow.js

Я хочу создать модель для преобразования градусов Цельсия в градусы Фаренгейта с помощью Tensorflow.js (с Node.js).

Однако я не понимаю, какой формы использовать.

Я пробовал разные input_shape, такие как [1], [1,20], и, наконец, установил [20] Я также пробовал разные формы тензора для массивов градусов Цельсия и Фаренгейта, таких как tensor(celsius), tensor([celsius]).

Вот код


var model = tf.sequential()
model.add(tf.layers.dense({inputShape:[20], units: 1}))

async function trainModel(model, inputs, labels) {
    // Prepare the model for training.  
    model.compile({
      optimizer: tf.train.adam(),
      loss: tf.losses.meanSquaredError,
      metrics: ['mse'],
    });

    const batchSize = 28;
    const epochs = 500;

    return await model.fit(inputs, labels, {
      epochs,
      shuffle: true,
    //   callbacks: tfvis.show.fitCallbacks(
    //     { name: 'Training Performance' },
    //     ['loss', 'mse'], 
    //     { height: 200, callbacks: ['onEpochEnd'] }
    //   )
    });
  }

c = tf.tensor([celsius]) // celsius = [1,2,3,4,...]
console.info(c.shape) // ==> [1,20]

f = tf.tensor([fahrenheit])
console.info(f.shape) // ==> [1,20]

trainModel(model, c, f)

Более того, в учебнике по Python input_shape есть [1] . С Node.js работает только [20].

Форма входов [1,20] и это правильно.

Форма меток тоже [1,20], но вызывает следующую ошибку:

Отладчик говорит:

Error when checking target: expected dense_Dense1 to have shape [,1], but got array with shape [1,20].

- РЕДАКТИРОВАТЬ

Кроме того, когда я пытаюсь input_shape: [1,20], это дает мне:

expected dense_Dense1_input to have 3 dimension(s). but got array with shape 1,20

-

Я ожидаю, что модель будет обучаться, связывая значения C° со значениями F°.

Спасибо

@joyzaza дарит мне expected dense_Dense1_input to have 3 dimension(s). but got array with shape 1,20

clota974 27.05.2019 11:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
349
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Ошибка ясна:

{inputShape:[20], units: 1}

Модель содержит один слой. inputShape:[20] что означает, что batchInputShape, то есть [null, 20], будет формой первого слоя. Аналогично, units: 1 указывает, что последний слой будет иметь форму [null, 1].

Используемые функции имеют форму [1, 20], соответствующую batchInputShape модели. Однако это не относится к этикеткам в форме [1, 20]. Он должен иметь форму [1, 1], поэтому выдает ошибку:

expected dense_Dense1 to have shape [,1], but got array with shape [1,20]

Размер единиц модели должен быть изменен, чтобы отразить форму меток.

{inputShape:[20], units: 20}

В учебнике Python ставится units=1, input_shape=[1]. Я пробовал на Node, но не работает. Существует только ОДНА переменная (повторяющаяся для разных значений), так что не будет ли это unit:1 и shape:1 ?

clota974 27.05.2019 14:32

Если вы используете {inputShape:[1], units: 1}, то ваши функции и метки должны иметь форму [b, 1], где b — количество элементов.

edkeveked 27.05.2019 16:53

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