【发布时间】:2020-04-07 09:07:33
【问题描述】:
我正在使用模块 bert-for-tf2 将 BERT 模型包装为 Tensorflow 2.0 中的 Keras 层,我已按照您的指南将 BERT 模型实现为 Keras 层。
我正在尝试从句子中提取嵌入;就我而言,这句话是“你好”
我对模型预测的输出有疑问;我写了这个模型:
model_word_embedding = tf.keras.Sequential([
tf.keras.layers.Input(shape=(4,), dtype='int32', name='input_ids'),
bert_layer
])
model_word_embedding .build(input_shape=(None, 4))
然后我想提取上面写的句子的嵌入:
sentences = ["Hello"]
predict = model_word_embedding .predict(sentences)
对象 predict 包含 4 个数组,每个数组包含 768 个元素:
print(predict)
print(len(predict))
print(len(predict[0][0]))
...
[[[-0.02768866 -0.7341324 1.9084396 ... -0.65953904 0.26496622
1.1610721 ]
[-0.19322394 -1.3134469 0.10383344 ... 1.1250225 -0.2988368
-0.2323082 ]
[-1.4576151 -1.4579685 0.78580517 ... -0.8898649 -1.1016986
0.6008501 ]
[ 1.41647 -0.92478925 -1.3651332 ... -0.9197768 -1.5469263
0.03305872]]]
4
768
我知道这 4 个数组中的每个数组都代表我的原始句子,但我想获得一个数组作为原始句子的嵌入。 所以,我的问题是:如何获得句子的嵌入?
在 BERT 源代码中我读到了这个:
对于分类任务,使用第一个向量(对应[CLS])作为“句子向量”。请注意,这只有意义,因为整个模型都经过了微调。
所以我必须从预测输出中取出第一个数组,因为它代表我的句子向量?
感谢您的支持
【问题讨论】:
标签: keras nlp embedding word-embedding sentence