тензор потока. js получение Ошибка при проверке ввода: ожидается, что плотность_данных1 имеет 3 измерения. но получил массив с формой - PullRequest
1 голос
/ 05 марта 2020

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

этот простой код

    let tf = require('@tensorflow/tfjs-node');

    let features = {
        x: [1,2,3,4,5,6,7,8,9],
        y: [1,2,3,4,5,6,7,8,9]
      }

    let tensorfeature  = tf.tensor2d(Object.values(features))

    console.log(tensorfeature.shape)

    const model = tf.sequential();
        model.add(tf.layers.dense(
            {
            inputShape: tensorfeature.shape,
            units: 1
        }
            ))
            const optimizer = tf.train.sgd(0.005);
            model.compile({optimizer: optimizer, loss: 'meanAbsoluteError'}); 
            model.fit(tensorfeature,
                {epochs: 5}
                )

Результат: ошибка при проверке вход: ожидается, что плотность_данных1 имеет 3 измерения. но получил массив с формой 2,9

, попробовал несколько вещей с изменением формы, срезом и т. д. c без удачи. Может кто-нибудь указать мне, что именно не так?

1 Ответ

0 голосов
/ 06 марта 2020

model.fit принимает как минимум два параметра x, y, которые являются тензорами или массивом тензоров. Объект config является третьим параметром.

Кроме того, тензор элемента (tensorfeature), передаваемый в качестве аргумента для model.fit, должен быть на одно измерение выше, чем inputShape модели. Поскольку tensorfeature.shape используется в качестве inputShape, если мы хотим отслеживать модель с tensorfeature, ее размер следует расширить. Это можно сделать, используя reshape или expandDims.

model.fit(tensorfeature.expandDims(0))
// or possibly
model.fit(tensorfeature.reshape([1, ...tensorfeature.shape])

Это несоответствие формы между моделью и данными обучения обсуждалось здесь и там

...