Версия Tensorflow: 2.x
Python: 3.7.4
Отключенный график: Я пытаюсь повторить приведенную ниже модель архитектуры, но правая часть кажется, отключился, когда я попытался построить модель в Керасе. Я уже передал скрытые матрицы HQ (для вопроса) и HA (для ответа) в качестве входных данных для слоя внимания (ниже мы можем увидеть входные данные для слоя Coattention - формы ввода (512,600) и (512, 600) и Coattention выходные формы также одинаковы для матриц CQ и CA). Пожалуйста, помогите мне понять это разъединение. Нужно ли это исправлять или это можно игнорировать?
Конечная модель:
inputs = [input_text1, input_text2]
outputs = score_oq_oa
model = Model(inputs=inputs, outputs=outputs)
model.summary()
Ожидаемая модель Архитектура:
График, сгенерированный моделью: Почему он отключен с правой стороны? Пожалуйста, помогите мне понять. Я не использовал слой сцепления после двунаправленных слоев вопросов и ответов, но я просто передал выходные матрицы обоих двунаправленных слоев в качестве входных данных для слоя внимания, как указано выше.
Вопрос обновлен с помощью кода для слоя Coattention, как показано ниже:
Здесь HQ и HA - это скрытые матрицы состояний / выходы двух отдельных двунаправленных слоев, как мы видим в модельная архитектура.
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)
Вектор формы контекста вопроса (CQ): (512, 600)
Вектор формы контекста ответа (CA): (512, 600)