Я хотел бы реализовать архитектуру кодер-декодер на основе LSTM или GRU с уровнем внимания. Я видел, что у Keras есть слой для этого tensorflow.keras.layers.Attention
, и я хотел бы использовать его (все остальные вопросы и ресурсы, кажется, реализуют его сами или используют сторонние библиотеки). Кроме того, я не использую сеть для преобразования последовательности в последовательность, а для двоичной классификации, поэтому приведенный в документации пример меня немного смущает.
Я представляю себе такую модель.
import tensorflow as tf
x = tf.keras.Input((100, 50))
# encoder
hidden_states = tf.keras.layers.GRU(32, return_sequences=True)(x)
# decoder + attention
? = tf.keras.layers.Attention()([?, ?])
z = tf.keras.layers.GRU(32)(?)
# classification
z = tf.keras.layers.Dense(1, activation='sigmoid')(z)
model = tf.keras.Model(inputs=x, outputs=z)
Декодер и часть внимания этой сети мне неясны. Я знаю, что мне нужно создать контекстный вектор из скрытых состояний кодера и текущего скрытого состояния декодеров.
Как бы я реализовал декодер и часть внимания этой сети?