Модель классификации предложений TFLearn CNN - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь обучить CNN для классификации предложений с использованием TFLearn.

Моя реализация

  1. Я не использую слой внедрения
  2. Модель Word2Vecиспользуется для встраивания слов с размером вектора 100
  3. Каждое предложение дополняется так, что все предложения имеют длину 30
  4. Есть 10 классовв моих данных

Таким образом, каждое предложение имеет размер 30x100.

Я хочу использовать TFLearn для разработки CNN для классификации этих предложений, чтобы проверить это, я написалследующий код

net = tflearn.input_data(shape=[None, 30])
net = tflearn.conv_1d(net, 128, 5, padding="valid", activation='relu')
net = tflearn.max_pool_1d(net, 2)
net = tflearn.dropout(net, 0.5)
net = tflearn.fully_connected(net, 10, activation='softmax')
net = tflearn.regression(net, optimizer='adam', learning_rate=0.001, loss='categorical_crossentropy')

Когда я запустил это, я получил следующую ошибку

Incoming Tensor shape must be 3-D

Я решил это, изменив

net = tflearn.input_data(shape=[None, 30])до

net = tflearn.input_data(shape=[None, 30, 100]), потому что каждое слово представлено вектором размером 100.

При обучении этому с размером пакета 16 и периодом 1000 потеря составляла около 1,5, а точностьбыл 65% -71%, и он никогда не улучшался с течением времени, несмотря ни на что.

Дополнительная инфormation

  • 100 предложения используются для обучения этой модели.

Итак, мой вопрос, не сходится ли модель, потому что форма ввода каким-то образомнеправильно, или это не сходится, потому что мои тренировочные данные недостаточно хороши, или я должен тренировать их дольше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...