Tensorflow版本:2.x
Python版本:3.7.4
断开的图表:我试图复制下面的模型架构,但当我尝试在Keras中绘制模型时,右侧部分似乎没有连接。我已经将隐藏矩阵HQ(针对问题)和HA(针对答案)作为输入传递给了注意力层(我们可以在下面的摘要中看到Coattention层的输入-输入形状为(512,600)和(512,600),矩阵CQ和CA的Coattention输出形状也相同)。请帮助我理解这种断开连接现象。这需要进行更正吗?还是可以忽略这个问题?
最终模型:
inputs = [input_text1, input_text2]
outputs = score_oq_oa
model = Model(inputs=inputs, outputs=outputs)
model.summary()
模型生成的图表: 为什么右侧断开?请帮我理解。 我在问题和答案的双向层之后没有使用连接层,而是像上面所述将两个双向层的输出矩阵作为注意层的输入传递。
![输入图像描述](https://istack.dev59.com/pe3i6.webp)
以下是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)
def call(self, inputs): HQ, HA = inputs[0], inputs[1]
。 - emilyfy