Могу ли я использовать 3D-ввод на плотном слое Keras?

В качестве упражнения мне нужно использовать только плотные слои для выполнения классификации текста. Я хочу использовать встраивание слов, проблема в том, что набор данных тогда является трехмерным (образцы, слова предложения, размер встраивания). Могу ли я ввести набор 3D-данных в плотный слой?

Спасибо


person Kostas Papastamos    schedule 21.02.2019    source источник
comment
Я думаю, вы можете попробовать TimeDistributed.   -  person Chen Hao    schedule 06.04.2020


Ответы (1)


Как указано в документации keras, вы можете использовать данные 3D (или более высокого ранга) в качестве входных данных для слоя Dense. но вход сначала сглаживается:

Примечание: если входные данные слоя имеют ранг больше 2, то они сглаживаются до начального скалярного произведения с ядром.

Это означает, что если ваши входные данные имеют форму (batch_size, sequence_length, dim), то плотный слой сначала сгладит ваши данные до формы (batch_size * sequence_length, dim), а затем применит плотный слой, как обычно. Вывод будет иметь форму (batch_size, sequence_length, hidden_units). На самом деле это то же самое, что и применение слоя Conv1D с размером ядра 1, и может быть более явно использовать слой Conv1D вместо слоя Dense.

person Anna Krogager    schedule 21.02.2019
comment
Я знаю, но нас просят использовать только плотные слои. В противном случае я бы даже не пробовал это. Спасибо, в любом случае! - person Kostas Papastamos; 21.02.2019