如何将新向量连接到现有的 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
对于一个句子,我可能会提取几个实体,每个实体都嵌入了 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