Сеть LSTM от многих ко многим - PullRequest
0 голосов
/ 18 июня 2020

Я создаю сеть «многие ко многим» в Керасе, используя LSTM. У меня есть последовательности разной длины (метки всегда имеют ту же длину, что и последовательность, которую они описывают). Чтобы справиться с разной длиной и после поиска в других сообщениях SO, я нашел, что заполнение + маскирование является лучшим решением.

Это моя модель:
enter image description here

Итак, у меня есть n (874) образцов дополненных последовательностей max_len (24) с 25 функциями в каждой. Но как мне обращаться со своими этикетками? Я их тоже подкладываю?

Если я дополню их так же, как мой X (с тем же специальным значением), я получу следующее:
Форма X_train: (873, 24, 25)
Форма y_train: (873 , 24)

Все в порядке, за исключением того, что я получаю следующую ошибку: ValueError: Can not squeeze dim[1], expected a dimension of 1, got 24 for '{{node binary_crossentropy/weighted_loss/Squeeze}} = Squeeze[T=DT_FLOAT, squeeze_dims=[-1]](Cast_1)' with input shapes: [1,24].

Поиск этой ошибки приводит к публикации сообщения об удалении retun_sequences=True из моего слоя LSTM, за исключением того, что я не хочу, чтобы, поскольку каждый из моих временных шагов помечен ...

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

Изменить:
Пояснительная иллюстрация архитектуры, которую я хочу достичь, благодаря этому ответу: { ссылка }
enter image description here

1 Ответ

0 голосов
/ 18 июня 2020

Обнаружена проблема:

X_train shape : (873, 24, 25)
y_train shape : (873, 24)

y_train содержал 873 выборки длиной 24, с одной меткой для каждого временного шага, как я уже сказал, но, вероятно, из-за возможности классификации с несколькими метками каждая метка для каждый временной шаг должен содержаться в списке, поэтому правильная форма для y_train должна быть:

y_train shape : (873, 24, 1)

Таким образом, речь шла о переносе каждой метки между [] во время предварительной обработки, архитектура правильная и работает (и теперь Мне осталось определить насколько хорошо, но это еще один зверь ахах)

...