Transformers documentation
ProphetNet
このモデルは2020年1月13日にHF papersで公開され、2020年11月16日にHugging Face Transformersに貢献されました。
ProphetNet
概要
ProphetNet モデルは、Yu Yan、Weizhen Qi、Yeyun Gong、Dayiheng Liu、Nan Duan、Jiusheng Chen、Ruofei Zhang、Ming Zhou によって 2020 年 1 月 13 日に ProphetNet: Predicting Future N-gram for Sequence-to-Sequence Pre-training で提案されました。
ProphetNet はエンコーダー・デコーダーモデルであり、次のトークンのみではなく、ngram言語モデリングのためにn個の未来トークンを予測できます。
論文の抄録は以下の通りです。
本論文では、新しいシーケンスツーシーケンス事前学習モデルであるProphetNetを提案します。ProphetNetは、future n-gram predictionと呼ばれる新しい自己教師あり目的関数と、提案されたn-stream self-attention機構を導入しています。従来のシーケンスツーシーケンスモデルにおける1ステップ先予測の最適化とは異なり、ProphetNetはnステップ先予測によって最適化されます。このnステップ先予測では、各タイムステップにおいて、過去のコンテキストトークンに基づいて次のn個のトークンを同時に予測します。future n-gram predictionは、モデルが将来のトークンを計画することを明示的に促し、強い局所的相関への過学習を防ぎます。ProphetNetは、ベーススケールのデータセット(16GB)と大規模データセット(160GB)を用いて事前学習しました。その後、CNN/DailyMail、Gigaword、SQuAD 1.1のベンチマークにおいて、要約生成タスクと質問生成タスクの実験を実施しました。実験結果から、ProphetNetは、同じ規模の事前学習コーパスを用いたモデルと比較して、これらのすべてのデータセットで新しい最良の結果(state-of-the-art)を達成することが示されました。
著者のコードはこちらで確認できます。
使用のコツ
- ProphetNet は絶対位置埋め込みを持つモデルであるため、通常は左側ではなく右側にパディングを適用することが推奨されます。
- モデルアーキテクチャは元の Transformer に基づいていますが、デコーダー内の「標準的な」自己注意機構を、メインの自己注意機構と、自己および n-stream(予測)自己注意機構に置き換えています。
リソース
ProphetNetConfig
class transformers.ProphetNetConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Trueactivation_dropout: float | int = 0.1activation_function: str = 'gelu'vocab_size: int = 30522hidden_size: int = 1024encoder_ffn_dim: int = 4096num_encoder_layers: int = 12num_encoder_attention_heads: int = 16decoder_ffn_dim: int = 4096num_decoder_layers: int = 12num_decoder_attention_heads: int = 16attention_dropout: float | int = 0.1dropout: float | int = 0.1max_position_embeddings: int = 512init_std: float = 0.02add_cross_attention: bool = Truedecoder_start_token_id: int | None = 0ngram: int = 2num_buckets: int = 32relative_max_distance: int = 128disable_ngram_loss: bool = Falseeps: float = 0.0use_cache: bool = Truepad_token_id: int | None = 0bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2is_decoder: bool = Falsetie_word_embeddings: bool = True )
パラメータ
- is_encoder_decoder (
bool、任意、デフォルトはTrue) — モデルがエンコーダー/デコーダーとして使用されるかどうかを示します。 - activation_dropout (
Union[float, int]、任意、デフォルトは0.1) — 全結合層内の活性化の dropout 率です。 - activation_function (
str、任意、デフォルトはgelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu"など。 - vocab_size (
int、任意、デフォルトは30522) — モデルの語彙サイズ。input_idsで表現できるトークンの種類数を定義します。 - hidden_size (
int、任意、デフォルトは1024) — 隠れ表現の次元数。 - encoder_ffn_dim (
int、任意、デフォルトは4096) — エンコーダー内の「中間」層(フィードフォワード層と呼ばれることが多い)の次元数。 - num_encoder_layers (
int、任意、デフォルトは12) — Transformer エンコーダーの隠れ層の数です。設定されていない場合、num_layersと同じ値が使用されます。 - num_encoder_attention_heads (
int、任意、デフォルトは16) — Transformer エンコーダーの各アテンション層におけるアテンションヘッドの数。 - decoder_ffn_dim (
int、任意、デフォルトは4096) — デコーダー内の「中間」層(フィードフォワード層と呼ばれることが多い)の次元数。 - num_decoder_layers (
int、任意、デフォルトは12) — Transformer デコーダーの隠れ層の数。設定されていない場合、num_layersと同じ値が使用されます。 - num_decoder_attention_heads (
int、任意、デフォルトは16) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。 - attention_dropout (
Union[float, int]、任意、デフォルトは0.1) — アテンション確率のドロップアウト率です。 - dropout (
Union[float, int]、任意、デフォルト値は0.1) — すべての dropout レイヤーの比率です。 - max_position_embeddings (
int、任意、デフォルトは512) — このモデルが使用される可能性のある最大シーケンス長です。 - init_std (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - add_cross_attention (
bool、任意、デフォルトはTrue) — モデルにクロスアテンション層を追加するかどうかを指定します。 - decoder_start_token_id (
int、任意、デフォルトは0) — エンコーダー・デコーダーモデルがbosとは異なるトークンでデコーディングを開始する場合、そのトークンの ID。 - ngram (
int、任意、デフォルトは 2) — 予測する将来のトークンの数。従来の言語モデルと同様に次の最初のトークンを予測するようにするには 1 に設定します。 - num_buckets (
int, 任意、デフォルトは 32) — 各アテンション層で使用するバケット数です。これは相対位置の計算に使用されます。詳細については、[T5 の論文](https://huggingface.co/papers/1910.10683)を参照してください。 - relative_max_distance (
int、任意、デフォルト値は 128) — この数値を超える相対距離は、最後の同じバケットに格納されます。これは相対位置の計算に使用されます。詳細については、[T5 の論文](https://huggingface.co/papers/1910.10683を参照)を参照してください。 - disable_ngram_loss (
bool、任意、デフォルトはFalse) — 最初のトークンのみ予測する形で学習するかどうかを指定します。 - eps (
float, 任意、デフォルトは 0.0) — 損失計算におけるラベルスミューシングのepsilonパラメータの値を制御します。0 に設定すると、ラベルスミューシングは行われません。 - use_cache (
bool、任意、デフォルトはTrue) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=Trueの場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。 - pad_token_id (
int、任意、デフォルトは0) — 語彙内でパディングに使用されるトークン ID。 - bos_token_id (
int、任意、デフォルトは1) — 語彙におけるストリーム開始に使用されるトークン ID。 - eos_token_id (
Union[int, list[int]]、任意、デフォルトは2) — 語彙内でストリーム終了に使用されるトークン ID。 - is_decoder (
bool、任意、デフォルトはFalse) — モデルがデコーダーとして使用されるかどうかを示します。Falseの場合、モデルはエンコーダーとして使用されます。 - tie_word_embeddings (
bool、任意、デフォルトはTrue) — モデルのtied_weights_keysマッピングに従って重み埋め込みを共有するかどうかを指定します。
これは ProphetNetModel の設定を保存するための設定クラスです。指定された引数に基づいて Prophetnet モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、microsoft/prophetnet-large-uncased と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
ProphetNetTokenizer
class transformers.ProphetNetTokenizer
< source >( vocab_file: strdo_lower_case: bool | None = Truedo_basic_tokenize: bool | None = Truenever_split: collections.abc.Iterable | None = Noneunk_token: str | None = '[UNK]'sep_token: str | None = '[SEP]'x_sep_token: str | None = '[X_SEP]'pad_token: str | None = '[PAD]'mask_token: str | None = '[MASK]'tokenize_chinese_chars: bool | None = Truestrip_accents: bool | None = Noneclean_up_tokenization_spaces: bool = True**kwargs )
パラメータ
- vocab_file (
str) — 語彙を含むファイル。 - do_lower_case (
bool、省略可、デフォルトはTrue) — トークン化時に、入力を小文字に変換するかどうかを指定します。 - do_basic_tokenize (
bool、省略可、デフォルトはTrue) — WordPieceの前に基本トークン化を行うかどうかを指定します。 - never_split (
Iterable、省略可) — トークン化中に分割されないトークンのコレクション。do_basic_tokenize=Trueの場合のみ有効です。 - unk_token (
str、任意、デフォルトは"[UNK]") — 不明トークンです。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。 - sep_token (
str、任意、デフォルトは"[SEP]") — 複数のシーケンスからシーケンスを構築する際に使用される区切りトークンです。例えば、シーケンス分類用の2つのシーケンス、または質問応答用のテキストと質問などです。また、特殊トークンを用いて構築されたシーケンスの最後のトークンとしても使用されます。 - x_sep_token (
str、任意、デフォルトは"[X_SEP]") — ProphetNetForConditionalGeneration によって生成可能な、特別な第2の区切りトークンです。要約において箇条書きのような文を区切るために使用されます。例 - pad_token (
str、任意、デフォルトは"[PAD]") — パディングに使用されるトークンです。例えば、長さが異なるシーケンスをバッチ処理する場合に使用します。 - mask_token (
str、任意、デフォルトは"[MASK]") — 値をマスクするために使用されるトークンです。これは、マスク言語モデリングでこのモデルを学習する際に使用されるトークンです。モデルが予測しようとする対象となるトークンです。 - tokenize_chinese_chars (
bool, 省略可, デフォルトはTrue) — 中国語の文字をトークン化するかどうか。これは日本語では無効化されるべきです(このissueを参照)。
- strip_accents (
bool, 任意) — すべてのアクセント記号を除去するかどうか。このオプションが指定されない場合、lowercaseの値によって決定されます(元の BERT と同じ)。 - clean_up_tokenization_spaces (
bool、任意、デフォルトはTrue) — デコード後にスペースをクリーンアップするかどうか。クリーンアップとは、余分なスペースなどの潜在的なアーティファクトを削除することを指します。
WordPiece をベースにした ProphetNetTokenizer を構築します。
このトークナイザーは、PreTrainedTokenizer を継承しており、主要なメソッドのほとんどが含まれています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → List[int]
シーケンス分類タスクにおいて、シーケンスまたはシーケンスのペアからモデルの入力を構築するために、特殊トークンを連結して追加します。BERTシーケンスは次の形式を持ちます:
- 単一シーケンス:
[CLS] X [SEP] - シーケンスのペア:
[CLS] A [SEP] B [SEP]
単一の文字列内のトークン(文字列)のシーケンスに変換します。
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool | None = False ) → List[int]
特殊トークンが追加されていないトークンリストからシーケンスIDを取得します。このメソッドは、トークナイザーのprepare_for_modelメソッドを使用して特殊トークンを追加する際に呼び出されます。
ProphetNet固有の出力
class transformers.models.prophetnet.modeling_prophetnet.ProphetNetSeq2SeqLMOutput
< source >( loss: typing.Optional[torch.FloatTensor] = Nonelogits: typing.Optional[torch.FloatTensor] = Nonelogits_ngram: typing.Optional[torch.FloatTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_hidden_states: tuple[torch.FloatTensor] | None = Nonedecoder_ngram_hidden_states: tuple[torch.FloatTensor] | None = Nonedecoder_attentions: tuple[torch.FloatTensor] | None = Nonedecoder_ngram_attentions: tuple[torch.FloatTensor] | None = Nonecross_attentions: tuple[torch.FloatTensor] | None = Noneencoder_last_hidden_state: typing.Optional[torch.FloatTensor] = Noneencoder_hidden_states: tuple[torch.FloatTensor] | None = Noneencoder_attentions: tuple[torch.FloatTensor] | None = None )
パラメータ
- loss (
torch.FloatTensor、形状(1,)、任意、labelsが指定された場合に返されます) — 言語モデリングの損失。 - logits (
torch.FloatTensor、形状(batch_size, decoder_sequence_length, config.vocab_size)) — メインストリームの言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。 - logits_ngram (
torch.FloatTensor、形状(batch_size, ngram * decoder_sequence_length, config.vocab_size)) — 予測ストリーム言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。 - past_key_values (
Cache, 省略可能, が返されるのはuse_cache=Trueが渡された場合、またはconfig.use_cache=True) — これは Cache のインスタンスです。詳細については、 KVキャッシュガイド.デコーダーの事前計算済み hidden-states(attention ブロックの key と value)を保持しています。これらはシーケンシャルデコーディングを高速化するために使用できます(
past_key_values入力参照)。 - decoder_hidden_states (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_hidden_states=Trueが渡された場合、またはconfig.output_hidden_states=True) — のタプルtorch.FloatTensor((埋め込み層を持つモデルの場合は埋め込みの出力用 1 つ + 各層の出力用 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size).各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。
- decoder_ngram_hidden_states (
tuple(torch.FloatTensor), 省略可能, が返されるのはoutput_hidden_states=Trueが渡された場合、またはconfig.output_hidden_states=True) — のタプルtorch.FloatTensor((埋め込みの出力用 1 つ + 各層の出力用 1 つ)で、形状は(batch_size, ngram * decoder_sequence_length, hidden_size).各層の出力および初期埋め込み出力における、デコーダーの predict ストリームの隠れ状態
- decoder_attentions (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの(batch_size, num_heads, sequence_length, sequence_length).自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。
- decoder_ngram_attentions (
tuple(torch.FloatTensor), 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状の (各レイヤーごとに 1 つの)(batch_size, num_attn_heads, decoder_sequence_length, decoder_sequence_length).デコーダーの予測ストリームにおけるアテンション重み。アテンションのsoftmax適用後、自己アテンションヘッドにおける加重平均の計算に使用されます。
- cross_attentions (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの(batch_size, num_heads, sequence_length, sequence_length).クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
- encoder_last_hidden_state (
torch.FloatTensor、形状(batch_size, encoder_sequence_length, hidden_size)、任意) — モデルのエンコーダーの最終層の出力における、隠れ状態のシーケンスです。 - encoder_hidden_states (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_hidden_states=Trueが渡された場合、またはconfig.output_hidden_states=True) — のタプルtorch.FloatTensor((埋め込み層を持つモデルの場合は埋め込みの出力用1つ、各層の出力用1つずつ)で、形状は(batch_size, sequence_length, hidden_size).各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。
- encoder_attentions (
tuple[torch.FloatTensor], 省略可, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの(batch_size, num_heads, sequence_length, sequence_length).アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。
シーケンスツーシーケンス言語モデルの出力の基底クラス。
class transformers.models.prophetnet.modeling_prophetnet.ProphetNetSeq2SeqModelOutput
< source >( last_hidden_state: FloatTensorlast_hidden_state_ngram: typing.Optional[torch.FloatTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_hidden_states: tuple[torch.FloatTensor] | None = Nonedecoder_ngram_hidden_states: tuple[torch.FloatTensor] | None = Nonedecoder_attentions: tuple[torch.FloatTensor] | None = Nonedecoder_ngram_attentions: tuple[torch.FloatTensor] | None = Nonecross_attentions: tuple[torch.FloatTensor] | None = Noneencoder_last_hidden_state: typing.Optional[torch.FloatTensor] = Noneencoder_hidden_states: tuple[torch.FloatTensor] | None = Noneencoder_attentions: tuple[torch.FloatTensor] | None = None )
パラメータ
- last_hidden_state (
torch.FloatTensorの形状(batch_size, decoder_sequence_length, hidden_size)) — モデルのデコーダーの最終層の出力における、メインストリームの隠れ状態のシーケンス。past_key_valuesが使用されている場合、出力されるのは、形状(batch_size, 1, hidden_size)のシーケンスの最後の隠れ状態のみです。 - last_hidden_state_ngram (
torch.FloatTensor、shape(batch_size,ngram * decoder_sequence_length, config.vocab_size)、任意) — モデルのデコーダーの最終層の出力における、予測ストリームの隠れ状態のシーケンス。 - past_key_values (
Cache, 省略可能, が返されるのはuse_cache=Trueが渡された場合、またはconfig.use_cache=True) — これは Cache のインスタンスです。詳細については、 KVキャッシュガイド.デコーダーの事前計算済み hidden-states(attention ブロックの key と value)を保持しています。これらはシーケンシャルデコーディングを高速化するために使用できます(
past_key_values入力参照)。 - decoder_hidden_states (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_hidden_states=Trueが渡された場合、またはconfig.output_hidden_states=True) — のタプルtorch.FloatTensor((埋め込み層を持つモデルの場合は埋め込みの出力用 1 つ + 各層の出力用 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size).各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。
- decoder_ngram_hidden_states (
tuple(torch.FloatTensor), 省略可能, が返されるのはoutput_hidden_states=Trueが渡された場合、またはconfig.output_hidden_states=True) — のタプルtorch.FloatTensor((埋め込みの出力用 1 つ + 各層の出力用 1 つ)で、形状は(batch_size, ngram * decoder_sequence_length, hidden_size).各層の出力および初期埋め込み出力における、デコーダーの predict ストリームの隠れ状態
- decoder_attentions (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの(batch_size, num_heads, sequence_length, sequence_length).自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。
- decoder_ngram_attentions (
tuple(torch.FloatTensor), 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの要素を含む torch.FloatTensor のタプル。アテンションの softmax 適用後の、デコーダーの predict ストリームのアテンション重み。重み付き平均の計算に使用されます。(batch_size, num_attn_heads, decoder_sequence_length, decoder_sequence_length).デコーダーの予測ストリームにおけるアテンション重み。アテンションのsoftmax適用後、…内の加重平均を計算するために使用されます。
- cross_attentions (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの(batch_size, num_heads, sequence_length, sequence_length).クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
- encoder_last_hidden_state (
torch.FloatTensor、形状(batch_size, encoder_sequence_length, hidden_size)、任意) — モデルのエンコーダーの最終層の出力における、隠れ状態のシーケンスです。 - encoder_hidden_states (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_hidden_states=Trueが渡された場合、またはconfig.output_hidden_states=True) — のタプルtorch.FloatTensor((埋め込み層を持つモデルの場合は埋め込みの出力用1つ、各層の出力用1つずつ)で、形状は(batch_size, sequence_length, hidden_size).各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。
- encoder_attentions (
tuple[torch.FloatTensor], 省略可, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの(batch_size, num_heads, sequence_length, sequence_length).アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。
モデルエンコーダーの出力の基底クラスであり、シーケンシャルデコーディングを高速化できる事前計算済みヒドゥンステートも含まれます。
class transformers.models.prophetnet.modeling_prophetnet.ProphetNetDecoderModelOutput
< source >( last_hidden_state: FloatTensorlast_hidden_state_ngram: typing.Optional[torch.FloatTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonehidden_states: tuple[torch.FloatTensor] | None = Nonehidden_states_ngram: tuple[torch.FloatTensor] | None = Noneattentions: tuple[torch.FloatTensor] | None = Nonengram_attentions: tuple[torch.FloatTensor] | None = Nonecross_attentions: tuple[torch.FloatTensor] | None = None )
パラメータ
- last_hidden_state (
torch.FloatTensorの形状(batch_size, decoder_sequence_length, hidden_size)) — モデルのデコーダーの最終層の出力における、メインストリームの隠れ状態のシーケンス。past_key_valuesが使用されている場合、出力されるのは、形状(batch_size, 1, hidden_size)のシーケンスの最後の隠れ状態のみです。 - last_hidden_state_ngram (
torch.FloatTensor、shape(batch_size, ngram * decoder_sequence_length, config.vocab_size)) — モデルのデコーダーの最終層の出力における、予測ストリームの隠れ状態のシーケンス。 - past_key_values (
Cache, 省略可能, が返されるのはuse_cache=Trueが渡された場合、またはconfig.use_cache=True) — これは Cache のインスタンスです。詳細については、 KVキャッシュガイド.デコーダーの事前計算済み hidden-states(attention ブロックの key と value)を保持しています。これらはシーケンシャルデコーディングを高速化するために使用できます(
past_key_values入力参照)。 - hidden_states (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_hidden_states=Trueが渡された場合、またはconfig.output_hidden_states=True) — のタプルtorch.FloatTensor((埋め込み層を持つモデルの場合は埋め込みの出力用 1 つ + 各層の出力用 1 つ)で、形状は(batch_size, sequence_length, hidden_size).各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- hidden_states_ngram (
tuple(torch.FloatTensor), 省略可, が返されるのはoutput_hidden_states=Trueが渡された場合、またはconfig.output_hidden_states=True) — のタプルtorch.FloatTensor((埋め込みの出力用 1 つ + 各層の出力用 1 つ)で、形状は(batch_size, ngram * decoder_sequence_length, hidden_size).各層の出力および初期埋め込み出力における、デコーダーの predict ストリームの隠れ状態
- attentions (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの(batch_size, num_heads, sequence_length, sequence_length).アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
- ngram_attentions (
tuple(torch.FloatTensor), 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの要素を含む(batch_size, num_attn_heads, decoder_sequence_length, decoder_sequence_length).デコーダーの予測ストリームにおけるアテンション重み。アテンションのsoftmax適用後、…内の加重平均を計算するために使用されます。
- cross_attentions (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの(batch_size, num_heads, sequence_length, sequence_length).クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
シーケンシャルなデコーディングを高速化するために、過去のキー/値を含む場合もあるモデルの出力の基底クラスです。
class transformers.models.prophetnet.modeling_prophetnet.ProphetNetDecoderLMOutput
< source >( loss: typing.Optional[torch.FloatTensor] = Nonelogits: typing.Optional[torch.FloatTensor] = Nonelogits_ngram: typing.Optional[torch.FloatTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonehidden_states: tuple[torch.FloatTensor] | None = Nonehidden_states_ngram: tuple[torch.FloatTensor] | None = Noneattentions: tuple[torch.FloatTensor] | None = Nonengram_attentions: tuple[torch.FloatTensor] | None = Nonecross_attentions: tuple[torch.FloatTensor] | None = None )
パラメータ
- loss (
torch.FloatTensor、形状(1,)、任意、labelsが指定された場合に返されます) — 言語モデリングの損失。 - logits (
torch.FloatTensor、形状(batch_size, decoder_sequence_length, config.vocab_size)) — メインストリームの言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。 - logits_ngram (
torch.FloatTensor、形状(batch_size, ngram * decoder_sequence_length, config.vocab_size)) — 予測ストリーム言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。 - past_key_values (
Cache, 省略可能, が返されるのはuse_cache=Trueが渡された場合、またはconfig.use_cache=True) — これは Cache のインスタンスです。詳細については、 KVキャッシュガイド.デコーダーの事前計算済み hidden-states(attention ブロックの key と value)を保持しています。これらはシーケンシャルデコーディングを高速化するために使用できます(
past_key_values入力参照)。 - hidden_states (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_hidden_states=Trueが渡された場合、またはconfig.output_hidden_states=True) — のタプルtorch.FloatTensor((埋め込み層を持つモデルの場合は埋め込みの出力用 1 つ + 各層の出力用 1 つ)で、形状は(batch_size, sequence_length, hidden_size).各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- hidden_states_ngram (
tuple(torch.FloatTensor), 省略可, が返されるのはoutput_hidden_states=Trueが渡された場合、またはconfig.output_hidden_states=True) — のタプルtorch.FloatTensor((埋め込みの出力用 1 つ + 各層の出力用 1 つ)で、形状は(batch_size, ngram * decoder_sequence_length, hidden_size).各層の出力および初期埋め込み出力における、デコーダーの predict ストリームの隠れ状態
- attentions (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの(batch_size, num_heads, sequence_length, sequence_length).アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
- ngram_attentions (
tuple(torch.FloatTensor), 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの要素を含む torch.FloatTensor のタプル。デコーダーの predict ストリームのアテンション重み(アテンションの softmax 適用後)で、の重み付き平均を計算するために使用されます。(batch_size, num_attn_heads, decoder_sequence_length, decoder_sequence_length).デコーダーの予測ストリームにおけるアテンション重み。アテンションのsoftmax適用後、…内の加重平均を計算するために使用されます。
- cross_attentions (
tuple[torch.FloatTensor], 省略可能, が返されるのはoutput_attentions=Trueが渡された場合、またはconfig.output_attentions=True) — のタプルtorch.FloatTensor(の形状を持つ、各レイヤーごとに1つの(batch_size, num_heads, sequence_length, sequence_length).クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
シーケンシャルなデコーディングを高速化するために、過去のキー/値を含む場合もあるモデルの出力の基底クラスです。
ProphetNetModel
クラス transformers.ProphetNetModel
< source >( config: ProphetNetConfig )
パラメータ
- config (ProphetNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
特定のヘッドを上に載せず、生のhidden-statesを出力する素のProphetnet Modelです。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.Tensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → ProphetNetSeq2SeqModelOutput or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- decoder_input_ids (
torch.LongTensorの形状(batch_size, target_sequence_length), 、任意) — 語彙におけるデコーダー入力シーケンスのトークンインデックスです。インデックスは AutoTokenizer を使用して取得できます。詳細については PreTrainedTokenizer.encode() および PreTrainedTokenizer.call() を参照してください。デコーダー入力 ID とは何か? ProphetNet は、decoder_input_ids の生成の開始トークンとして eos_token_id を使用します。past_key_values を使用する場合、オプションとして最後の decoder_input_ids だけを入力すれば十分です (past_key_values を参照)。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
ProphetNet は
decoder_input_idsの生成における開始トークンとしてeos_token_idを使用します。past_key_valuesを使用する場合、任意で最後のdecoder_input_idsだけを入力すれば十分です(past_key_valuesを参照)。 - decoder_attention_mask (
torch.BoolTensor、shape(batch_size, target_sequence_length)、任意) — デフォルトの動作:decoder_input_ids内の pad トークンを無視するテンソルを生成します。デフォルトでは、causal mask も使用されます。 - encoder_outputs (
tuple、任意) — (last_hidden_state、任意:hidden_states、任意:attentions) のタプルlast_hidden_stateは形状(batch_size, sequence_length, hidden_size)、任意) で、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。 - past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - inputs_embeds (
torch.Tensor、形状(batch_size, sequence_length, hidden_size)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - decoder_inputs_embeds (
torch.Tensorの形状(batch_size, target_sequence_length, hidden_size), 、任意) — 、任意で、decoder_input_idsの代わりに、埋め込み表現を直接渡すこともできます。past_key_valuesが使用されている場合、最後のdecoder_inputs_embedsのみを入力すれば十分です(past_key_values). 、decoder_input_idsのインデックスを関連するベクトルに変換する方法を、モデル内部の埋め込みルックアップ行列よりも細かく制御したい場合に便利です。decoder_input_idsとdecoder_inputs_embedsの両方が設定されていない場合、decoder_inputs_embedsはinputs_embedsの値を採ります。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。 - output_attentions (
bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルのattentionsを参照してください。 - output_hidden_states (
bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルのhidden_statesを参照してください。 - return_dict (
bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。
戻り値
ProphetNetSeq2SeqModelOutput または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または ProphetNetSeq2SeqModelOutput。設定(ProphetNetConfig)と入力に応じて、さまざまな要素で構成されます。
ProphetNetModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (
torch.FloatTensor、shape(batch_size, decoder_sequence_length, hidden_size)) — モデルのデコーダーの最終層の出力における、メインストリームの隠れ状態のシーケンス。past_key_valuesが使用されている場合、出力されるのは、形状(batch_size, 1, hidden_size)のシーケンスの最後の隠れ状態のみです。last_hidden_state_ngram (
torch.FloatTensor、shape(batch_size,ngram * decoder_sequence_length, config.vocab_size)、optional) — モデルのデコーダーの最終層の出力における、予測ストリームの隠れ状態のシーケンス。past_key_values (
Cache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。デコーダーの事前計算済み hidden-states(attention ブロックの key と value)を保持しています。これらはシーケンシャルデコーディングを高速化するために使用できます(
past_key_values入力参照)。decoder_hidden_states (
tuple[torch.FloatTensor]、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。
decoder_ngram_hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返される)—torch.FloatTensorのタプル(埋め込みの出力用 1 つ + 各層の出力用 1 つ)、shape は(batch_size, ngram * decoder_sequence_length, hidden_size)。各層の出力および初期埋め込み出力における、デコーダーの predict ストリームの隠れ状態
decoder_attentions (
tuple[torch.FloatTensor]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。
decoder_ngram_attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_attn_heads, decoder_sequence_length, decoder_sequence_length)。デコーダーの予測ストリームにおけるアテンション重み。アテンションのsoftmax適用後、…内の加重平均を計算するために使用されます。
cross_attentions (
tuple[torch.FloatTensor]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
encoder_last_hidden_state (
torch.FloatTensor、shape(batch_size, encoder_sequence_length, hidden_size)、optional) — モデルのエンコーダの最終層の出力における、隠れ状態のシーケンス。encoder_hidden_states (
tuple[torch.FloatTensor]、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。
encoder_attentions (
tuple[torch.FloatTensor]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。
例:
>>> from transformers import AutoTokenizer, ProphetNetModel
>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/prophetnet-large-uncased")
>>> model = ProphetNetModel.from_pretrained("microsoft/prophetnet-large-uncased")
>>> input_ids = tokenizer(
... "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids # Batch size 1
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="pt").input_ids # Batch size 1
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state # main stream hidden states
>>> last_hidden_states_ngram = outputs.last_hidden_state_ngram # predict hidden statesProphetNetEncoder
class transformers.ProphetNetEncoder
< source >( config: ProphetNetConfig )
パラメータ
- config (ProphetNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
ProphetNetModelの独立したエンコーダー部分です。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- inputs_embeds (
torch.Tensor、形状(batch_size, sequence_length, hidden_size)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - output_attentions (
bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルのattentionsを参照してください。 - output_hidden_states (
bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルのhidden_statesを参照してください。 - return_dict (
bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。
戻り値
BaseModelOutput または tuple(torch.FloatTensor)
torch.FloatTensor のタプル、または BaseModelOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(ProphetNetConfig)や入力に応じて、さまざまな要素で構成されます。
ProphetNetEncoderのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
例:
>>> from transformers import AutoTokenizer, ProphetNetEncoder
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/prophetnet-large-uncased")
>>> model = ProphetNetEncoder.from_pretrained("patrickvonplaten/prophetnet-large-uncased-standalone")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_stateProphetNetDecoder
クラス transformers.ProphetNetDecoder
< source >( config: ProphetNetConfig )
パラメータ
- config (ProphetNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
ProphetNetModelの独立したデコーダー部分です。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → ProphetNetDecoderModelOutput or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- encoder_hidden_states (
torch.Tensor、形状(batch_size, sequence_length, hidden_size)、任意) — エンコーダーの最終層の出力における隠れ状態のシーケンスです。モデルがデコーダーとして設定されている場合、クロスアテンションで使用されます。 - encoder_attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — エンコーダー入力のパディングトークンインデックスに対するアテンションを回避するためのマスク。モデルがデコーダーとして設定されている場合、このマスクはクロスアテンションで使用されます。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - inputs_embeds (
torch.Tensor、形状(batch_size, sequence_length, hidden_size)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。 - output_attentions (
bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルのattentionsを参照してください。 - output_hidden_states (
bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルのhidden_statesを参照してください。 - return_dict (
bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。
戻り値
ProphetNetDecoderModelOutput または tuple(torch.FloatTensor)
torch.FloatTensor のタプル、または ProphetNetDecoderModelOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(ProphetNetConfig)と入力に応じて、さまざまな要素で構成されます。
ProphetNetDecoderのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (
torch.FloatTensor、shape(batch_size, decoder_sequence_length, hidden_size)) — モデルのデコーダーの最終層の出力における、メインストリームの隠れ状態のシーケンス。past_key_valuesが使用されている場合、出力されるのは、形状(batch_size, 1, hidden_size)のシーケンスの最後の隠れ状態のみです。last_hidden_state_ngram (
torch.FloatTensor、shape(batch_size, ngram * decoder_sequence_length, config.vocab_size)) — モデルのデコーダーの最終層の出力における、予測ストリームの隠れ状態のシーケンス。past_key_values (
Cache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。デコーダーの事前計算済み hidden-states(attention ブロックの key と value)を保持しています。これらはシーケンシャルデコーディングを高速化するために使用できます(
past_key_values入力参照)。hidden_states (
tuple[torch.FloatTensor]、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返される) —torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
hidden_states_ngram (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返される) —torch.FloatTensorのタプル (embeddings の出力用 1 つ + 各レイヤーの出力用 1 つ)、shape は(batch_size, ngram * decoder_sequence_length, hidden_size)。各層の出力および初期埋め込み出力における、デコーダーの predict ストリームの隠れ状態
attentions (
tuple[torch.FloatTensor]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
ngram_attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_attn_heads, decoder_sequence_length, decoder_sequence_length)。デコーダーの予測ストリームにおけるアテンション重み。アテンションのsoftmax適用後、…内の加重平均を計算するために使用されます。
cross_attentions (
tuple[torch.FloatTensor]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
例:
>>> from transformers import AutoTokenizer, ProphetNetDecoder
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/prophetnet-large-uncased")
>>> model = ProphetNetDecoder.from_pretrained("microsoft/prophetnet-large-uncased", add_cross_attention=False)
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_stateProphetNetForConditionalGeneration
クラス transformers.ProphetNetForConditionalGeneration
< source >( config: ProphetNetConfig )
パラメータ
- config (ProphetNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
言語モデリングヘッドを備えたProphetNetモデル。シーケンス生成タスクに使用できます。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.Tensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → ProphetNetSeq2SeqLMOutput or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- decoder_input_ids (
torch.LongTensorの形状(batch_size, target_sequence_length), 、任意) — 語彙におけるデコーダー入力シーケンスのトークンインデックスです。インデックスは AutoTokenizer を使用して取得できます。詳細については PreTrainedTokenizer.encode() および PreTrainedTokenizer.call() を参照してください。デコーダー入力 ID とは何か? ProphetNet は、decoder_input_ids の生成の開始トークンとして eos_token_id を使用します。past_key_values を使用する場合、オプションとして最後の decoder_input_ids だけを入力すれば十分です (past_key_values を参照)。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
ProphetNet は
decoder_input_idsの生成における開始トークンとしてeos_token_idを使用します。past_key_valuesを使用する場合、任意で最後のdecoder_input_idsだけを入力すれば十分です(past_key_valuesを参照)。 - decoder_attention_mask (
torch.BoolTensor、shape(batch_size, target_sequence_length)、任意) — デフォルトの動作:decoder_input_ids内の pad トークンを無視するテンソルを生成します。デフォルトでは、causal mask も使用されます。 - encoder_outputs (
torch.Tensor, 任意) —last_hidden_state、任意:hidden_states、任意:attentionsのタプルlast_hidden_stateは形状(batch_size, sequence_length, hidden_size)、任意)であり、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。 - past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - inputs_embeds (
torch.Tensor、形状(batch_size, sequence_length, hidden_size)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - decoder_inputs_embeds (
torch.Tensorの形状(batch_size, target_sequence_length, hidden_size), 、任意) — 、任意で、decoder_input_idsの代わりに、埋め込み表現を直接渡すこともできます。past_key_valuesが使用されている場合、最後のdecoder_inputs_embedsのみを入力すれば十分です(past_key_values). 、decoder_input_idsのインデックスを関連するベクトルに変換する方法を、モデル内部の埋め込みルックアップ行列よりも細かく制御したい場合に便利です。decoder_input_idsとdecoder_inputs_embedsの両方が設定されていない場合、decoder_inputs_embedsはinputs_embedsの値を採ります。 - labels (
torch.LongTensor、shape(batch_size,)、任意) — シーケンス分類/回帰の損失を計算するためのラベル。インデックスは[-100, 0, ..., config.vocab_size - 1]の範囲である必要があります。-100に設定されたすべてのラベルは無視(マスク)され、損失は[0, ..., config.vocab_size]内のラベルに対してのみ計算されます。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。 - output_attentions (
bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルのattentionsを参照してください。 - output_hidden_states (
bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルのhidden_statesを参照してください。 - return_dict (
bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。
戻り値
ProphetNetSeq2SeqLMOutput または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または ProphetNetSeq2SeqLMOutput。設定(ProphetNetConfig)や入力に応じて、さまざまな要素で構成されます。
ProphetNetForConditionalGenerationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
loss (
torch.FloatTensor、shape(1,)、optional、labelsが指定された場合に返されます)— 言語モデリングの損失。logits (
torch.FloatTensor、shape(batch_size, decoder_sequence_length, config.vocab_size)) — メインストリームの言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。logits_ngram (
torch.FloatTensor、shape(batch_size, ngram * decoder_sequence_length, config.vocab_size)) — predict stream 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。past_key_values (
Cache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。デコーダーの事前計算済み hidden-states(attention ブロックの key と value)を保持しています。これらはシーケンシャルデコーディングを高速化するために使用できます(
past_key_values入力参照)。decoder_hidden_states (
tuple[torch.FloatTensor]、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。
decoder_ngram_hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返される)—torch.FloatTensorのタプル(埋め込みの出力用 1 つ + 各層の出力用 1 つ)、shape は(batch_size, ngram * decoder_sequence_length, hidden_size)。各層の出力および初期埋め込み出力における、デコーダーの predict ストリームの隠れ状態
decoder_attentions (
tuple[torch.FloatTensor]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。
decoder_ngram_attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_attn_heads, decoder_sequence_length, decoder_sequence_length)。デコーダーの予測ストリームにおけるアテンション重み。アテンションのsoftmax適用後、自己アテンションヘッドにおける加重平均の計算に使用されます。
cross_attentions (
tuple[torch.FloatTensor]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
encoder_last_hidden_state (
torch.FloatTensor、shape(batch_size, encoder_sequence_length, hidden_size)、optional) — モデルのエンコーダの最終層の出力における、隠れ状態のシーケンス。encoder_hidden_states (
tuple[torch.FloatTensor]、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。
encoder_attentions (
tuple[torch.FloatTensor]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。
例:
>>> from transformers import AutoTokenizer, ProphetNetForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/prophetnet-large-uncased")
>>> model = ProphetNetForConditionalGeneration.from_pretrained("microsoft/prophetnet-large-uncased")
>>> input_ids = tokenizer(
... "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids # Batch size 1
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="pt").input_ids # Batch size 1
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> logits_next_token = outputs.logits # logits to predict next token as usual
>>> logits_ngram_next_tokens = outputs.logits_ngram # logits to predict 2nd, 3rd, ... next tokensProphetNetForCausalLM
クラス transformers.ProphetNetForCausalLM
< source >( config: ProphetNetConfig )
パラメータ
- config (ProphetNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
lm head を上部に備えた ProphetNetModel の独立したデコーダー部分。このモデルは因果
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → ProphetNetDecoderLMOutput or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- encoder_hidden_states (
torch.Tensor、形状(batch_size, sequence_length, hidden_size)、任意) — エンコーダーの最終層の出力における隠れ状態のシーケンスです。モデルがデコーダーとして設定されている場合、クロスアテンションで使用されます。 - encoder_attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — エンコーダー入力のパディングトークンインデックスに対するアテンションを回避するためのマスク。モデルがデコーダーとして設定されている場合、このマスクはクロスアテンションで使用されます。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - inputs_embeds (
torch.Tensor、形状(batch_size, sequence_length, hidden_size)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - labels (
torch.LongTensor、shape(batch_size, sequence_length)、任意) — 左から右への言語モデリング損失(次の単語の予測)を計算するためのラベルです。インデックスは[-100, 0, ..., config.vocab_size]の範囲である必要があります(input_idsの docstring を参照)。インデックスが-100に設定されたトークンは 無視(マスク)され、損失はラベルが[0, ..., config.vocab_size]の範囲にあるトークンに対してのみ計算されます。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。 - output_attentions (
bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルのattentionsを参照してください。 - output_hidden_states (
bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルのhidden_statesを参照してください。 - return_dict (
bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。
戻り値
ProphetNetDecoderLMOutput または tuple(torch.FloatTensor)
torch.FloatTensor のタプル、または ProphetNetDecoderLMOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(ProphetNetConfig)や入力に応じて、さまざまな要素で構成されます。
ProphetNetForCausalLMのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
loss (
torch.FloatTensor、shape(1,)、optional、labelsが指定された場合に返されます)— 言語モデリングの損失。logits (
torch.FloatTensor、shape(batch_size, decoder_sequence_length, config.vocab_size)) — メインストリームの言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。logits_ngram (
torch.FloatTensor、shape(batch_size, ngram * decoder_sequence_length, config.vocab_size)) — predict stream 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。past_key_values (
Cache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。デコーダーの事前計算済み hidden-states(attention ブロックの key と value)を保持しています。これらはシーケンシャルデコーディングを高速化するために使用できます(
past_key_values入力参照)。hidden_states (
tuple[torch.FloatTensor]、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返される) —torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
hidden_states_ngram (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返される) —torch.FloatTensorのタプル (embeddings の出力用 1 つ + 各レイヤーの出力用 1 つ)、shape は(batch_size, ngram * decoder_sequence_length, hidden_size)。各層の出力および初期埋め込み出力における、デコーダーの predict ストリームの隠れ状態
attentions (
tuple[torch.FloatTensor]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
ngram_attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_attn_heads, decoder_sequence_length, decoder_sequence_length)。デコーダーの予測ストリームにおけるアテンション重み。アテンションのsoftmax適用後、…内の加重平均を計算するために使用されます。
cross_attentions (
tuple[torch.FloatTensor]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
例:
>>> from transformers import AutoTokenizer, ProphetNetForCausalLM
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/prophetnet-large-uncased")
>>> model = ProphetNetForCausalLM.from_pretrained("microsoft/prophetnet-large-uncased")
>>> assert model.config.is_decoder, f"{model.__class__} has to be configured as a decoder."
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> # Model can also be used with EncoderDecoder framework
>>> from transformers import BertTokenizer, EncoderDecoderModel, AutoTokenizer
>>> import torch
>>> tokenizer_enc = BertTokenizer.from_pretrained("google-bert/bert-large-uncased")
>>> tokenizer_dec = AutoTokenizer.from_pretrained("microsoft/prophetnet-large-uncased")
>>> model = EncoderDecoderModel.from_encoder_decoder_pretrained(
... "google-bert/bert-large-uncased", "microsoft/prophetnet-large-uncased"
... )
>>> ARTICLE = (
... "the us state department said wednesday it had received no "
... "formal word from bolivia that it was expelling the us ambassador there "
... "but said the charges made against him are `` baseless ."
... )
>>> input_ids = tokenizer_enc(ARTICLE, return_tensors="pt").input_ids
>>> labels = tokenizer_dec(
... "us rejects charges against its ambassador in bolivia", return_tensors="pt"
... ).input_ids
>>> outputs = model(input_ids=input_ids, decoder_input_ids=labels[:, :-1], labels=labels[:, 1:])
>>> loss = outputs.loss