Transformers documentation

ProphetNet

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは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

< >

( 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

< >

( 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

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → List[int]

パラメータ

  • token_ids_0 (List[int]) — 特殊トークンを追加する ID のリスト。
  • token_ids_1 (List[int]、省略可) — シーケンスペア用の任意の2番目のIDリスト。

戻り値

List[int]

適切な特殊トークンを含む入力 IDのリスト。

シーケンス分類タスクにおいて、シーケンスまたはシーケンスのペアからモデルの入力を構築するために、特殊トークンを連結して追加します。BERTシーケンスは次の形式を持ちます:

  • 単一シーケンス: [CLS] X [SEP]
  • シーケンスのペア: [CLS] A [SEP] B [SEP]

convert_tokens_to_string

< >

( tokens: str )

単一の文字列内のトークン(文字列)のシーケンスに変換します。

get_special_tokens_mask

< >

( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool | None = False ) → List[int]

パラメータ

  • token_ids_0 (List[int]) — ID のリスト。
  • token_ids_1 (List[int]、省略可) — シーケンスペア用の任意の2番目のIDリスト。
  • already_has_special_tokens (bool、任意、デフォルトは False) — トークンリストが、モデル用の特殊トークンで既にフォーマットされているかどうかを示します。

戻り値

List[int]

範囲 [0, 1] の整数のリスト: 特殊トークンは 1、シーケンストークンは 0。

特殊トークンが追加されていないトークンリストからシーケンスIDを取得します。このメソッドは、トークナイザーのprepare_for_modelメソッドを使用して特殊トークンを追加する際に呼び出されます。

ProphetNet固有の出力

class transformers.models.prophetnet.modeling_prophetnet.ProphetNetSeq2SeqLMOutput

< >

( 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

< >

( 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

< >

( 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

< >

( 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

< >

( config: ProphetNetConfig )

パラメータ

  • config (ProphetNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

特定のヘッドを上に載せず、生のhidden-statesを出力する素のProphetnet Modelです。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( 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()を参照してください。

    入力IDとは何ですか?

  • 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()を参照してください。

    デコーダー入力IDとは何ですか?

    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 states

ProphetNetEncoder

class transformers.ProphetNetEncoder

< >

( config: ProphetNetConfig )

パラメータ

  • config (ProphetNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

ProphetNetModelの独立したエンコーダー部分です。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( 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()を参照してください。

    入力IDとは何ですか?

  • 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_state

ProphetNetDecoder

クラス transformers.ProphetNetDecoder

< >

( config: ProphetNetConfig )

パラメータ

  • config (ProphetNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

ProphetNetModelの独立したデコーダー部分です。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( 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()を参照してください。

    入力IDとは何ですか?

  • 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_state

ProphetNetForConditionalGeneration

クラス transformers.ProphetNetForConditionalGeneration

< >

( config: ProphetNetConfig )

パラメータ

  • config (ProphetNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

言語モデリングヘッドを備えたProphetNetモデル。シーケンス生成タスクに使用できます。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( 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()を参照してください。

    入力IDとは何ですか?

  • 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()を参照してください。

    デコーダー入力IDとは何ですか?

    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 tokens

ProphetNetForCausalLM

クラス transformers.ProphetNetForCausalLM

< >

( config: ProphetNetConfig )

パラメータ

  • config (ProphetNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

lm head を上部に備えた ProphetNetModel の独立したデコーダー部分。このモデルは因果

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( 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()を参照してください。

    入力IDとは何ですか?

  • 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
Update on GitHub