該BERT編碼器輸出的關鍵是default,encoder_outputs,pooled_output和sequence_output
據我所知,encoder_outputs是每個編碼器pooled_output的輸出,是全域背景關系sequence_output的輸出,是每個標記的輸出背景關系(如果我錯了,請糾正我)。但什么是default?你能給我一個更詳細的解釋嗎?
這是編碼器的鏈接
uj5u.com熱心網友回復:
Tensorflow檔案為您詢問的輸出提供了很好的解釋:
BERT 模型回傳一個帶有 3 個重要鍵的映射:pooled_output、sequence_output、encoder_outputs:
pooled_output 將每個輸入序串列示為一個整體。形狀為 [batch_size, H]。您可以將其視為整個電影評論的嵌入。
sequence_output 表示背景關系中的每個輸入標記。形狀為 [batch_size, seq_length, H]。您可以將其視為電影評論中每個標記的背景關系嵌入。
encoding_outputs 是 L Transformer 塊的中間激活。output["encoder_outputs"][i] 是形狀為 [batch_size, seq_length, 1024] 的張量,帶有第 i 個 Transformer 塊的輸出,對于 0 <= i < L。串列的最后一個值等于 sequence_output
這是對的區別另一個有趣的討論pooled_output和sequence_output,如果你有興趣。
該default輸出等于pooled_output,你可以驗證此:
import tensorflow as tf
import tensorflow_hub as hub
tfhub_handle_preprocess = 'https://tfhub.dev/tensorflow/bert_en_uncased_preprocess/3'
tfhub_handle_encoder = 'https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-4_H-512_A-8/1'
def build_classifier_model(name):
text_input = tf.keras.layers.Input(shape=(), dtype=tf.string, name='features')
bert_preprocess_model = hub.KerasLayer(tfhub_handle_preprocess, name='preprocessing')
encoder_inputs = bert_preprocess_model(text_input)
encoder = hub.KerasLayer(tfhub_handle_encoder)
outputs = encoder(encoder_inputs)
net = outputs[name]
return tf.keras.Model(text_input, net)
sentence = tf.constant([
"Improve the physical fitness of your goldfish by getting him a bicycle"
])
classifier_model = build_classifier_model(name='default')
default_output = classifier_model(sentence)
classifier_model = build_classifier_model(name='pooled_output')
pooled_output = classifier_model(sentence)
print(default_output == pooled_output)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/350064.html
