Tensorflow - Keras graphique déconnecté

Raghu:

Tensorflow Version: 2.x

Python: 3.7.4

Graphique Disconnected: Je tente de reproduire le modèle ci - dessous l' architecture, mais une partie droite semble être déconnecté lorsque j'ai essayé de tracer le modèle Keras. Je l' ai déjà passé les matrices cachées HQ (Pour la question) et HA (Pour toute réponse) comme entrées à la couche d'attention (Nous pouvons voir les entrées à la couche Coattention en résumé ci - dessous - Les formes d'entrée sont (512600) et (512, 600) et Coattention formes de sortie sont également identiques pour les matrices CQ et CA). S'il vous plaît aidez - moi à comprendre cette déconnexion. Est -ce que cela doit être corrigé ou peut - il être ignoré?

Modèle final:

inputs = [input_text1, input_text2]
outputs = score_oq_oa
model = Model(inputs=inputs, outputs=outputs)

model.summary()

entrez la description d'image ici

Modèle d'architecture prévu: entrez la description d'image ici

Modèle graphique généré: Pourquoi est - il déconnecté sur le côté droit? S'il vous plaît aidez - moi à comprendre. Je n'ai pas utilisé couche concatenate après couches bidirectionnelles de questions et de réponses , mais je viens de passer des matrices de sortie des deux couches bidirectionnels comme entrées à la couche d'attention comme indiqué ci - dessus.entrez la description d'image ici

Question mise à jour avec le code pour la couche Coattention comme ci-dessous:

Ici HQ et HA sont cachées matrices d'état / sorties de deux couches séparées bidirectionnelles comme nous voyons dans l'architecture du modèle.

class coattention(tf.keras.layers.Layer):

    def __init__(self):
        super(coattention, self).__init__()

    def call(self, HQ, HA):  

        L = tf.linalg.matmul(HA, HQ, transpose_a = True, transpose_b = False)
        AQ = tf.nn.softmax(L, axis = 1)
        AA = tf.nn.softmax(tf.transpose(L), axis = 1)

        CQ = tf.linalg.matmul(HA, AQ, transpose_a = False, transpose_b = False)
        CA = tf.linalg.matmul(HQ, AA, transpose_a = False, transpose_b = False)

        return CQ, CA


coattention_layer = coattention()
CQ, CA = coattention_layer(HQ, HA)
print ("Shape of Context vector of Question (CQ): ", CQ.shape)
print ("Shape of Context vector of Answer   (CA): ", CA.shape)

Forme du vecteur de contexte de la question (CQ): (512, 600)

Forme du vecteur de contexte de la réponse (CA): (512, 600)

W. Ronakrit:

Parce que vous n'avez pas fourni le code, je crois que vous avez oublié d'appeler la couche coattention avec la couche Bidirectional_7 en entrée.

Voici l'exemple de code

Ha = Input(shape=(1,2,3), name='Ha')
Hq = Input(shape=(1,2,3), name='Hq')

your_coattention_layer = Dense(12, name='your_coattention_layer')

# this part that I think you forgot
Ca = your_coattention_layer(Ha)
cQ = your_coattention_layer(Hq)


out1 = Dense(123, name='your_Ca_layer')(Ca)
out2 = Dense(123, name='your_Cq_later')(cQ)
M = Model(inputs=[Ha,Hq], outputs=[out1,out2])
M.summary()

from keras.utils import plot_model
plot_model(M, to_file='Example.png')

Ceci est l'image du modèle.

entrez la description d'image ici

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=278208&siteId=1
conseillé
Classement