Saltar al contenido

¿Cómo construir un modelo de atención con keras?

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *