如何将新向量连接到现有的 Bert 向量中?

How to concatenate new vectors into existing Bert vector?

对于一个句子,我可能会提取几个实体,每个实体都嵌入了 256 维向量。然后我将这些实体的平均值计算为单个向量来表示这些实体表示。

现在,我想将 bert 的 'pooled output' 层与这个实体向量连接在一起作为下一层的输入。这可能会提高原始 Bert 的性能。如何在 Keras 中执行此操作?

这是从教程中定义文本分类器模型的微调代码:

def build_classifier_model():
  text_input = tf.keras.layers.Input(shape=(), dtype=tf.string, name='text')
  
  encoder_inputs = preprocessing_layer(text_input)
  encoder = hub.KerasLayer(tfhub_handle_encoder, trainable=True, name='BERT_encoder')
  outputs = encoder(encoder_inputs)
  net = outputs['pooled_output']
  net = tf.keras.layers.Dropout(0.1)(net)
  net = tf.keras.layers.Dense(1, activation=None, name='classifier')(net)
  return tf.keras.Model(text_input, net)

512维的pooled_output如何与实体向量结合?

您首先需要确保要连接的向量在要连接的轴上具有相同的维度(例如(512,1) (512,1) -> (1024,1)) .

那么你可以使用: tf.keras.layers.Concatenate([pooled_output,entity_layer],axis=axis)

在所需的轴上。

您也可以在这里查看更多详细信息:https://www.tensorflow.org/api_docs/python/tf/keras/layers/concatenate