No dudes en divulgar nuestros tutoriales y códigos en tus redes, ayúdanos a hacer crecer nuestra comunidad.
Solución:
Las capas de atención ahora forman parte de la API de Keras de Tensorflow (2.1). Pero genera el mismo tensor de tamaño que su tensor de “consulta”.
Así es como se usa la atención al estilo Luong:
query_attention = tf.keras.layers.Attention()([query, value])
Y atención al estilo Bahdanau:
query_attention = tf.keras.layers.AdditiveAttention()([query, value])
La versión adaptada:
attention_weights = tf.keras.layers.Attention()([lstm, state_h])
Consulte el sitio web original para obtener más información: https://www.tensorflow.org/api_docs/python/tf/keras/layers/Attention https://www.tensorflow.org/api_docs/python/tf/keras/layers/ AditivoAtención
Hay un problema con la forma de inicializar attention layer
y pasar parámetros. Debe especificar el número de attention layer
unidades en este lugar y modificar la forma de pasar los parámetros:
context_vector, attention_weights = Attention(32)(lstm, state_h)
El resultado:
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_1 (InputLayer) (None, 200) 0
__________________________________________________________________________________________________
embedding (Embedding) (None, 200, 128) 32000 input_1[0][0]
__________________________________________________________________________________________________
bi_lstm_0 (Bidirectional) [(None, 200, 256), ( 263168 embedding[0][0]
__________________________________________________________________________________________________
bidirectional (Bidirectional) [(None, 200, 256), ( 394240 bi_lstm_0[0][0]
bi_lstm_0[0][1]
bi_lstm_0[0][2]
bi_lstm_0[0][3]
bi_lstm_0[0][4]
__________________________________________________________________________________________________
concatenate (Concatenate) (None, 256) 0 bidirectional[0][1]
bidirectional[0][3]
__________________________________________________________________________________________________
attention (Attention) [(None, 256), (None, 16481 bidirectional[0][0]
concatenate[0][0]
__________________________________________________________________________________________________
dense_3 (Dense) (None, 1) 257 attention[0][0]
==================================================================================================
Total params: 706,146
Trainable params: 706,146
Non-trainable params: 0
__________________________________________________________________________________________________
None
Si te ha resultado provechoso nuestro artículo, sería de mucha ayuda si lo compartes con otros seniors de este modo nos ayudas a difundir nuestra información.