Seq2SeqLM
類別keras_hub.models.Seq2SeqLM()
用於序列到序列語言建模任務的基底類別。
Seq2SeqLM
任務包裝了 keras_hub.models.Backbone
和 keras_hub.models.Preprocessor
,以建立可用於生成和生成微調的模型,當生成以序列到序列設定中的其他輸入序列為條件時。
Seq2SeqLM
任務提供了一個額外的、高階的 generate()
函數,可用於逐個標記地自動遞迴地對輸出序列進行採樣。Seq2SeqLM
類別的 compile()
方法包含一個額外的 sampler
參數,可用於傳遞 keras_hub.samplers.Sampler
以控制如何對預測分布進行採樣。
呼叫 fit()
時,每個輸入應包含一個輸入和輸出序列。模型將被訓練為使用因果遮罩逐個標記地預測輸出序列,類似於 keras_hub.models.CausalLM
任務。與 CausalLM
任務不同,必須傳遞一個輸入序列,並且輸出序列中的所有標記都可以完全關注它。
所有 Seq2SeqLM
任務都包含一個 from_preset()
建構函數,可用於載入預先訓練的配置和權重。
範例
# Load a Bart backbone with pre-trained weights.
seq_2_seq_lm = keras_hub.models.Seq2SeqLM.from_preset(
"bart_base_en",
)
seq_2_seq_lm.compile(sampler="top_k")
# Generate conditioned on the `"The quick brown fox."` as an input sequence.
seq_2_seq_lm.generate("The quick brown fox.", max_length=30)
from_preset
方法Seq2SeqLM.from_preset(preset, load_weights=True, **kwargs)
從模型預設值實例化 keras_hub.models.Task
。
預設值是配置、權重和其他檔案資產的目錄,用於儲存和載入預先訓練的模型。preset
可以作為以下其中之一傳遞
'bert_base_en'
'kaggle://user/bert/keras/bert_base_en'
'hf://user/bert_base_en'
'./bert_base_en'
對於任何 Task
子類別,您可以執行 cls.presets.keys()
來列出類別上可用的所有內建預設值。
可以透過兩種方式呼叫此建構函式。一種是從特定於任務的基底類別呼叫,例如 keras_hub.models.CausalLM.from_preset()
,另一種是從模型類別呼叫,例如 keras_hub.models.BertTextClassifier.from_preset()
。如果從基底類別呼叫,則會從預設目錄中的設定推斷出傳回物件的子類別。
引數
True
,則會將儲存的權重載入模型架構中。如果為 False
,則會將所有權重隨機初始化。範例
# Load a Gemma generative task.
causal_lm = keras_hub.models.CausalLM.from_preset(
"gemma_2b_en",
)
# Load a Bert classification task.
model = keras_hub.models.TextClassifier.from_preset(
"bert_base_en",
num_classes=2,
)
compile
方法Seq2SeqLM.compile(
optimizer="auto", loss="auto", weighted_metrics="auto", sampler="top_k", **kwargs
)
設定 CausalLM
任務以進行訓練和產生。
CausalLM
任務擴充了 keras.Model.compile
的預設編譯簽章,並為 optimizer
、loss
和 weighted_metrics
提供預設值。若要覆寫這些預設值,請在編譯期間將任何值傳遞給這些引數。
CausalLM
任務會將新的 sampler
新增至 compile
,可用於控制 generate
函式所使用的取樣策略。
請注意,因為訓練輸入包含從損失中排除的填補權杖,因此使用 weighted_metrics
而不是 metrics
進行編譯幾乎總是一個好主意。
引數
"auto"
、優化器名稱或 keras.Optimizer
執行個體。預設為 "auto"
,它會使用給定模型和任務的預設優化器。如需可能的 optimizer
值的詳細資訊,請參閱 keras.Model.compile
和 keras.optimizers
。"auto"
、損失函式名稱或 keras.losses.Loss
執行個體。預設為 "auto"
,其中會將 keras.losses.SparseCategoricalCrossentropy
損失函式套用至權杖分類 CausalLM
任務。如需可能的 loss
值的詳細資訊,請參閱 keras.Model.compile
和 keras.losses
。"auto"
或模型在訓練和測試期間要評估的指標清單。預設為 "auto"
,其中會套用 keras.metrics.SparseCategoricalAccuracy
來追蹤模型在猜測遮罩權杖值時的準確性。如需可能的 weighted_metrics
值的詳細資訊,請參閱 keras.Model.compile
和 keras.metrics
。keras_hub.samplers.Sampler
執行個體。設定在 generate()
呼叫期間使用的取樣方法。如需內建取樣策略的完整清單,請參閱 keras_hub.samplers
。keras.Model.compile
。generate
方法Seq2SeqLM.generate(inputs, max_length=None, stop_token_ids="auto")
根據提示 inputs
產生文字。
此方法會根據給定的 inputs
產生文字。用於產生的取樣方法可以透過 compile()
方法設定。
如果 inputs
是 tf.data.Dataset
,則會「逐批」產生輸出並串聯起來。否則,所有輸入都將作為單一批次處理。
如果 preprocessor
附加到模型,則會在 generate()
函式內部對 inputs
進行預處理,並且應該符合 preprocessor
層預期的結構(通常是原始字串)。如果沒有附加 preprocessor
,則輸入應符合 backbone
預期的結構。如需每個範例的示範,請參閱上面的範例用法。
引數
tf.data.Dataset
。如果模型附加了 preprocessor
,則 inputs
應與 preprocessor
層預期的結構相符。如果未附加 preprocessor
,則 inputs
應與 backbone
模型預期的結構相符。preprocessor
所設定的最大 sequence_length
。如果 preprocessor
為 None
,則應將 inputs
填補至所需的最大長度,並且會忽略此參數。None
、「自動」或詞彙 ID 的元組。預設為「自動」,它會使用 preprocessor.tokenizer.end_token_id
。未指定處理器將會產生錯誤。None 表示在產生 max_length
個詞彙後停止產生。您也可以指定模型應該停止的一組詞彙 ID 清單。請注意,詞彙序列中的每個詞彙都會被視為停止詞彙,不支援多詞彙停止序列。save_to_preset
方法Seq2SeqLM.save_to_preset(preset_dir)
將任務儲存至預設目錄。
引數
preprocessor
屬性keras_hub.models.Seq2SeqLM.preprocessor
用於預處理輸入的 keras_hub.models.Preprocessor
層。
backbone
屬性keras_hub.models.Seq2SeqLM.backbone
具有核心架構的 keras_hub.models.Backbone
模型。