Плохая форма в модели LSTM - PullRequest
       10

Плохая форма в модели LSTM

1 голос
/ 01 февраля 2020

Я использую тензор потока js, и у меня есть этот код, чтобы построить мою модель рекуррентной нейронной сети для задачи классификации с 3 классами, экземпляры размером 250,. У меня появляется следующее сообщение об ошибке, когда я пытаюсь подогнать свою модель:

Ошибка: ошибка при проверке цели: ожидалось, что dens_Dense1 будет иметь форму [, 3], но получил массив с формой [4827 , 1].

Я довольно новичок в построении собственной модели в tf js, и мне кажется, что я испортил тензорные формы

PS: мой набор данных содержит 4827 экземпляров и мой размер вложения 32

function buildModel(maxLen, vocabularySize, embeddingSize, numClasses)
{
   const model = tensorflow.sequential();

   model.add(tensorflow.layers.embedding(
      {
         inputDim: vocabularySize,
         outputDim: embeddingSize,//embeddingSize = 32
         inputLength: maxLen//maxLen = 250
      }));

   model.add(tensorflow.layers.lstm({units: embeddingSize/*, returnSequences: true*/}));

   model.add(tensorflow.layers.dense({units: numClasses, activation: 'softmax'}));//numClasses = 3
   return model;
}
const history = await model.fit(data, labels, {
   epochs: epochs,
   batchSize: batchSize,
   validationSplit: validationSplit,
   callbacks: () =>
   {
      console.log("Coucou");
   }
});
console.log(history);

Спасибо

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

Вам нужно изменить размер слоя, вернув false в слой lstm

model.add(tensorflow.layers.lstm({units: embeddingSize, returnSequences: false}));
0 голосов
/ 02 февраля 2020

Проблема заключалась в том, что мои данные имели метку и формат 1D (0, 1 или 2) вместо формата 3D ([1,0,0], [0,1,0], [0,0,1] )

...