Transformers documentation

XLNet

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

and get access to the augmented documentation experience

to get started

このモデルは2019年6月19日にHF papersで公開され、2020年11月16日にHugging Face Transformersに貢献されました。

XLNet

概要

XLNetモデルは、Zhilin Yang、Zihang Dai、Yiming Yang、Jaime Carbonell、Ruslan Salakhutdinov、Quoc V. Le によって提案された XLNet: Generalized Autoregressive Pretraining for Language Understanding に記載されています。XLnetは、Transformer-XLモデルの拡張であり、自己回帰的手法を用いて事前学習を行います。これにより、入力シーケンスのファクター化順序のすべての順列にわたる期待尤度を最大化することで、双方向のコンテキストを学習します。

論文の抄録は以下の通りです。

双方向コンテキストをモデル化できる能力により、BERTのようなデノイジングオートエンコーディングに基づく事前学習は、自己回帰言語モデリングに基づく事前学習手法よりも優れた性能を発揮します。しかし、BERTはマスクによって入力を破損させることに依存しているため、マスクされた位置間の依存関係を無視し、事前学習とファインチューニングの間の乖離に苦しみます。これらの長所と短所を踏まえ、我々は汎用的な自己回帰事前学習手法であるXLNetを提案します。XLNetは、(1) 分解順序のすべての順列にわたる期待尤度を最大化することで双方向コンテキストの学習を可能にし、(2) その自己回帰的な定式化によりBERTの限界を克服します。さらに、XLNetは最先端の自己回帰モデルであるTransformer-XLのアイデアを事前学習に統合しています。実証的に、同様の実験設定の下で、XLNetは質問応答、自然言語推論、感情分析、文書ランキングを含む20のタスクにおいて、多くの場合大幅な差をつけてBERTを上回ります。

このモデルは thomwolf によって提供されました。元のコードは こちら で確認できます。

使用のコツ

  • perm_mask 入力を使用することで、学習時およびテスト時の具体的なアテンションパターンを制御できます。
  • 完全な自己回帰モデルを様々な分解順序で訓練する難しさから、XLNet は事前学習において、target_mapping 入力によって選択される出力トークンの一部のみをターゲットとして使用します。
  • XLNet をシーケンシャルデコーディング(つまり、完全双方向設定ではない場合)に使用するには、perm_mask と target_mapping 入力を使用して、アテンションのスパンと出力を制御します。
  • XLNetは、シーケンス長の制限がない数少ないモデルの一つです。
  • XLNetは従来の自己回帰モデルではなく、それを基盤とした学習戦略を採用しています。文内のトークンを並べ替え、モデルが最後のn個のトークンを使ってn+1番目のトークンを予測できるようにします。この処理はすべてマスクによって行われるため、文は実際には正しい順序でモデルに与えられますが、n+1番目のトークンに対して最初のn個のトークンをマスクする代わりに、XLNetは1,…、シーケンス長のある特定の並べ替えにおいて、それより前のトークンを隠すマスクを使用します。
  • XLNetもまた、Transformer-XLと同じ再帰メカニズムを使用して、長期の依存関係を構築します。

リソース

XLNetConfig

class transformers.XLNetConfig

< >

( 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 = 0is_encoder_decoder: bool = Falseid2label: 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 = Nonevocab_size: int = 32000d_model: int = 1024n_layer: int = 24n_head: int = 16d_inner: int = 4096d_head: int | None = Noneff_activation: str = 'gelu'attn_type: str = 'bi'initializer_range: float = 0.02layer_norm_eps: float = 1e-12dropout: float | int = 0.1mem_len: int | None = 512reuse_len: int | None = Noneuse_mems_eval: bool = Trueuse_mems_train: bool = Falsebi_data: bool = Falseclamp_len: int = -1same_length: bool = Falsesummary_type: str = 'last'summary_use_proj: bool = Truesummary_activation: str = 'tanh'summary_last_dropout: float | int = 0.1start_n_top: int = 5end_n_top: int = 5pad_token_id: int | None = 5bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2tie_word_embeddings: bool = True )

パラメータ

  • vocab_size (int、任意、デフォルトは 32000) — モデルの語彙サイズです。input_ids で表現できるトークンの種類数を定義します。
  • d_model (int、任意、デフォルトは 1024) — エンコーダ層とプーラ層のサイズ。
  • n_layer (int、任意、デフォルトは 24) — Transformer デコーダーの隠れ層の数。
  • n_head (int、任意、デフォルトは 16) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • d_inner (int、任意、デフォルトは 4096) — MLP 表現の次元数。
  • d_head (int, 省略可) — アテンションヘッドの次元数です。None の場合、hidden_size // num_attention_heads がデフォルトとして使用されます。
  • ff_activation (str または Callable、省略可、デフォルトは "gelu") — 非線形活性化関数(関数または文字列)です。文字列の場合、"gelu"、"relu"、"silu" および "gelu_new" がサポートされています。
  • attn_type (str、任意、デフォルトは"bi") — モデルで使用されるアテンションの種類。XLNet には"bi"を、Transformer-XL には"uni"を設定します。
  • initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • layer_norm_eps (float、任意、デフォルトは 1e-12) — レイヤーノーマル層で使用する epsilon です。
  • dropout (Union[float, int]、任意、デフォルト値は0.1) — すべての dropout レイヤーの比率です。
  • mem_len (int または None、任意) — キャッシュするトークンの数です。以前の forward pass で事前計算済みの key/value ペアは再計算されません。詳細はクイックスタートを参照してください。
  • reuse_len (int, 省略可) — 現在のバッチ内で、将来にわたってキャッシュして再利用するトークンの数。
  • use_mems_eval (bool、任意、デフォルトはTrue) — 評価モードにおいて、モデルが再帰的メモリ機構を利用するかどうかを指定します。
  • use_mems_train (bool, optional, defaults to False) — Whether or not the model should make use of the recurrent memory mechanism in train mode.
    For pretraining, it is recommended to set `use_mems_train` to `True`. For fine-tuning, it is recommended to set `use_mems_train` to `False` as discussed [here](https://github.com/zihangdai/xlnet/issues/41#issuecomment-505102587). If `use_mems_train` is set to `True`, one has to make sure that the train batches are correctly pre-processed, *e.g.* `batch_1 = [[This line is], [This is the]]` and `batch_2 = [[ the first line], [ second line]]` and that all batches are of equal size.
  • bi_data (bool、任意、デフォルトはFalse) — 双方向入力パイプラインを使用するかどうか。通常、事前学習時にはTrueに、ファインチューニング時にはFalseに設定します。
  • clamp_len (int、任意、デフォルトは -1) — clamp_len より大きいすべての相対距離をクランプします。この属性を -1 に設定すると、クランプを行いません。
  • same_length (bool、省略可能、デフォルトは False) — 各トークンに同じアテンション長を使用するかどうか。
  • summary_type (str, 省略可, デフォルト値は “last”) — シーケンスサマリーを行う際に使用される引数。シーケンス分類モデルや複数選択モデルで使用されます。 以下のいずれかのオプションを指定する必要があります:
    • "last": 最後のトークンの隠れ状態を取得します(XLNetと同様)。
    • "first": 最初のトークンの隠れ状態を取得します(BERTと同様)。
    • "mean": 全トークンの隠れ状態の平均を計算します。
    • "cls_index": 分類トークンの位置を示す Tensor を指定します(GPT/GPT-2 のように)。
    • "attn": 現在未実装です。マルチヘッドアテンションを使用してください。
  • summary_use_proj (bool、省略可、デフォルトは True) — シーケンスサマリーを行う際に使用される引数。シーケンス分類モデルおよび複数選択モデルで使用されます。 ベクトル抽出後に射影を追加するかどうかを指定します。
  • summary_activation (str, 任意) — シーケンスサマリーを行う際に使用する引数です。シーケンス分類モデルおよび複数選択モデルで使用されます。 "tanh" を渡すと出力に tanh 活性化が適用され、それ以外の値を渡すと活性化は適用されません。
  • summary_last_dropout (float、任意、デフォルト値は 0.1) — シーケンス分類モデルおよび複数選択モデルで使用されます。 投影と活性化の後に適用する dropout の比率です。
  • start_n_top (int、省略可能、デフォルト値は 5)— SQuAD 評価スクリプトで使用されます。
  • end_n_top (int、省略可能、デフォルト値は 5) — SQuAD 評価スクリプトで使用されます。
  • pad_token_id (int、任意、デフォルトは 5) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int、任意、デフォルトは 1) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (Union[int, list[int]]、任意、デフォルトは 2) — 語彙内でストリーム終了に使用されるトークン ID。
  • tie_word_embeddings (bool、任意、デフォルトは True) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。

これは XLNetModel の設定を保存するための設定クラスです。指定された引数に基づいて Xlnet モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、xlnet/xlnet-large-cased と同様の設定が得られます。

設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。

例:

>>> from transformers import XLNetConfig, XLNetModel

>>> # Initializing a XLNet configuration
>>> configuration = XLNetConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = XLNetModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

XLNetTokenizer

クラス transformers.XLNetTokenizer

< >

( vocab: str | list[tuple[str, float]] | None = Noneunk_id: int = 0do_lower_case = Falseremove_space = Truekeep_accents = Falsebos_token = '<s>'eos_token = '</s>'unk_token = '<unk>'sep_token = '<sep>'pad_token = '<pad>'cls_token = '<cls>'mask_token = '<mask>'_spm_precompiled_charsmap = Noneadditional_special_tokens = None**kwargs )

パラメータ

  • vocab (list of tuples、任意) — Unigram モデル用の (token, score) のタプルのリストです。指定しない場合、空のリストが使用されます。
  • unk_id (int、任意、デフォルトは 0) — 語彙における不明トークンの ID。
  • do_lower_case (bool、任意、デフォルトはFalse) — トークン化時に、入力を小文字に変換するかどうかを指定します。
  • remove_space (bool、省略可能、デフォルトは True) — トークン化時にテキストをトリムするかどうか(文字列の前後にある余分なスペースを削除する)。
  • keep_accents (bool、省略可、デフォルトはFalse) — トークン化時にアクセント記号を保持するかどうか。
  • bos_token (str, 省略可, デフォルトは "<s>") — 事前学習時に使用されたシーケンス開始トークン。シーケンス分類器のトークンとしても使用できます。

    特殊トークンを用いてシーケンスを構築する場合、シーケンスの先頭に使用されるのはこのトークンではありません。使用されるのはcls_tokenです。

  • eos_token (str, 省略可, デフォルトは "</s>") — シーケンスの終了トークンです。

    特殊トークンを用いてシーケンスを構築する場合、シーケンスの終了に使用されるのはこのトークンではありません。 使用されるのはsep_tokenです。

  • unk_token (str、任意、デフォルトは "<unk>") — 不明トークンです。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。
  • sep_token (str、任意、デフォルトは "<sep>") — 複数のシーケンスからシーケンスを構築する際に使用される区切りトークンです。例えば、シーケンス分類では2つのシーケンス、質問応答ではテキストと質問に対して使用されます。また、特殊トークンを用いて構築されたシーケンスの最後のトークンとしても使用されます。
  • pad_token (str、任意、デフォルトは "<pad>") — パディングに使用されるトークンです。例えば、長さが異なるシーケンスをバッチ処理する際に使用します。
  • cls_token (str、省略可能、デフォルトは "<cls>") — シーケンス分類(トークンごとの分類ではなく、シーケンス全体の分類)を行う際に使用される分類トークンです。特殊トークンを用いて構築された場合、シーケンスの最初のトークンになります。
  • mask_token (str、任意、デフォルトは "<mask>") — 値をマスクするために使用されるトークンです。これは、マスク言語モデリングでこのモデルを学習する際に使用されるトークンです。モデルが予測しようとするトークンです。
  • additional_special_tokens (list[str]、任意、デフォルトは ["<eop>", "<eod>"]) — トークナイザーで使用される追加の特殊トークンです。

HuggingFaceのtokenizersライブラリをベースにしたXLNetのトークナイザーを構築します。Unigramに基づいています。

このトークナイザーは、主要なメソッドの大部分を含む TokenizersBackend を継承しています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

get_special_tokens_mask

< >

( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]

パラメータ

  • token_ids_0 — (すでにフォーマット済みの可能性がある)シーケンスの ID のリスト。
  • token_ids_1 — already_has_special_tokens=True の場合は使用されません。その場合は None でなければなりません。
  • already_has_special_tokens — シーケンスがすでに特殊トークンでフォーマットされているかどうかを示します。

戻り値

範囲 [0, 1] 内の整数のリスト

特殊トークンには1、シーケンストークンには0を指定します。

特殊トークンが追加されていないトークンリストからシーケンスIDを取得します。

高速なトークナイザーでは、データコラテーターはalready_has_special_tokens=Trueを指定してこれを呼び出し、すでに整形済みのシーケンスに対してマスクを構築します。その場合、all_special_idsへの所属を確認することによってマスクを計算します。

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

XLNet固有の出力

クラス transformers.models.xlnet.modeling_xlnet.XLNetModelOutput

< >

( last_hidden_state: Tensormems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

パラメータ

  • last_hidden_state (torch.Tensor の形状 (batch_size, num_predict, hidden_size)) — モデルの最終層における隠れ状態のシーケンス。

    num_predict は target_mapping.shape[1] に対応します。target_mapping が None の場合、num_predict は sequence_length に対応します。

  • mems (list[torch.Tensor]、長さはconfig.n_layers) — 事前計算されたhidden-statesを保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems入力参照)。このモデルにpastとして渡されたトークンIDは、すでに計算済みのため、input_idsとして渡すべきではありません。
  • hidden_states (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層を持つモデルの場合は埋め込みの出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_attentions=True が渡された場合、または config.output_attentions=True) — のタプル torch.Tensor ((各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length).

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

XLNetModelの出力型。

クラス transformers.models.xlnet.modeling_xlnet.XLNetLMHeadModelOutput

< >

( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

パラメータ

  • loss (torch.Tensor、形状 (1,)、任意、labels が指定された場合に返されます) — 言語モデリングの損失(次のトークンの予測用)。
  • logits (torch.Tensor 形状 (batch_size, num_predict, config.vocab_size)) — 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。

    num_predict は target_mapping.shape[1] に対応します。target_mapping が None の場合、num_predict は sequence_length に対応します。

  • mems (list[torch.Tensor]、長さはconfig.n_layers) — 事前計算されたhidden-statesを保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems入力参照)。このモデルにpastとして渡されたトークンIDは、すでに計算済みのため、input_idsとして渡すべきではありません。
  • hidden_states (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層を持つモデルの場合は埋め込みの出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_attentions=True が渡された場合、または config.output_attentions=True) — のタプル torch.Tensor ((各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length).

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

XLNetLMHeadModelの出力型。

class transformers.models.xlnet.modeling_xlnet.XLNetForSequenceClassificationOutput

< >

( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

パラメータ

  • loss (torch.Tensor、形状 (1,)、任意、label が指定された場合に返されます) — 分類(または、config.num_labels==1 の場合は回帰)の損失。
  • logits (torch.Tensor、形状 (batch_size, config.num_labels)) — 分類スコア(config.num_labels==1 の場合は回帰スコア)(SoftMax 適用前)。
  • mems (list[torch.Tensor]、長さはconfig.n_layers) — 事前計算されたhidden-statesを保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems入力参照)。このモデルにpastとして渡されたトークンIDは、すでに計算済みのため、input_idsとして渡すべきではありません。
  • hidden_states (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層を持つモデルの場合は埋め込みの出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_attentions=True が渡された場合、または config.output_attentions=True) — のタプル torch.Tensor ((各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length).

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

XLNetForSequenceClassificationの出力型。

class transformers.models.xlnet.modeling_xlnet.XLNetForMultipleChoiceOutput

< >

( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

パラメータ

  • loss (torch.Tensor、形状 (1,)、任意、labels が指定された場合に返されます) — 分類損失。
  • logits (torch.Tensor 形状 (batch_size, num_choices)) — num_choices は入力テンソルの2番目の次元です( input_ids を参照)。

    分類スコア(SoftMax 適用前)。

  • mems (list[torch.Tensor]、長さはconfig.n_layers) — 事前計算されたhidden-statesを保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems入力参照)。このモデルにpastとして渡されたトークンIDは、すでに計算済みのため、input_idsとして渡すべきではありません。
  • hidden_states (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層を持つモデルの場合は埋め込みの出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_attentions=True が渡された場合、または config.output_attentions=True) — のタプル torch.Tensor ((各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length).

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

XLNetForMultipleChoiceの出力型。

クラス transformers.models.xlnet.modeling_xlnet.XLNetForTokenClassificationOutput

< >

( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

パラメータ

  • loss (torch.Tensor、形状 (1,)、任意、labels が指定された場合に返されます) — 分類損失。
  • logits (torch.Tensor、形状 (batch_size, sequence_length, config.num_labels)) — 分類スコア(SoftMax 適用前)。
  • mems (list[torch.Tensor]、長さはconfig.n_layers) — 事前計算されたhidden-statesを保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems入力参照)。このモデルにpastとして渡されたトークンIDは、すでに計算済みのため、input_idsとして渡すべきではありません。
  • hidden_states (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層を持つモデルの場合は埋め込みの出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_attentions=True が渡された場合、または config.output_attentions=True) — のタプル torch.Tensor ((各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length).

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

XLNetForTokenClassificationOutputの出力型です。

クラス transformers.models.xlnet.modeling_xlnet.XLNetForQuestionAnsweringSimpleOutput

< >

( loss: typing.Optional[torch.Tensor] = Nonestart_logits: typing.Optional[torch.Tensor] = Noneend_logits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

パラメータ

  • loss (torch.Tensor、形状 (1,)、任意、labels が指定された場合に返されます) — 総スパン抽出損失は、開始位置と終了位置の Cross-Entropy の和です。
  • start_logits (torch.Tensor、形状 (batch_size, sequence_length,)) — Span の開始スコア(SoftMax 適用前)。
  • end_logits (torch.Tensor、形状 (batch_size, sequence_length,)) — Span の終了スコア(SoftMax 適用前)。
  • mems (list[torch.Tensor]、長さはconfig.n_layers) — 事前計算されたhidden-statesを保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems入力参照)。このモデルにpastとして渡されたトークンIDは、すでに計算済みのため、input_idsとして渡すべきではありません。
  • hidden_states (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層を持つモデルの場合は埋め込みの出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_attentions=True が渡された場合、または config.output_attentions=True) — のタプル torch.Tensor ((各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length).

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

XLNetForQuestionAnsweringSimpleの出力型。

クラス transformers.models.xlnet.modeling_xlnet.XLNetForQuestionAnsweringOutput

< >

( loss: typing.Optional[torch.Tensor] = Nonestart_top_log_probs: typing.Optional[torch.Tensor] = Nonestart_top_index: typing.Optional[torch.LongTensor] = Noneend_top_log_probs: typing.Optional[torch.Tensor] = Noneend_top_index: typing.Optional[torch.LongTensor] = Nonecls_logits: typing.Optional[torch.Tensor] = Nonemems: list[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

パラメータ

  • loss (torch.Tensor、形状 (1,)、任意、start_positions と end_positions が両方指定された場合に返されます) — 開始トークン、終了トークン(指定された場合は is_impossible)の分類損失の合計としての分類損失。
  • start_top_log_probs (torch.Tensor、形状 (batch_size, config.start_n_top)、任意、start_positions または end_positions が指定されていない場合に返されます) — ビームサーチによる、上位 config.start_n_top 個の開始トークンの可能性の対数確率。
  • start_top_index (torch.LongTensor、shape (batch_size, config.start_n_top)、optional、start_positions または end_positions が指定されていない場合に返されます) — ビームサーチによる、上位 config.start_n_top 個の開始トークンの候補のインデックス。
  • end_top_log_probs (torch.Tensor、形状 (batch_size, config.start_n_top * config.end_n_top)、任意、start_positions または end_positions が指定されていない場合に返されます) — ビームサーチによる、上位 config.start_n_top * config.end_n_top の終了トークンの可能性の対数確率
  • end_top_index(torch.LongTensor、形状 (batch_size, config.start_n_top * config.end_n_top)、任意、start_positions または end_positions が指定されていない場合に返されます) — 上位 config.start_n_top * config.end_n_top 個の終了トークンの候補のインデックス(ビームサーチ)。
  • cls_logits (torch.Tensor、形状 (batch_size,)、任意、start_positions または end_positions が指定されていない場合に返されます) — 回答の is_impossible ラベルに対する対数確率。
  • mems (list[torch.Tensor]、長さはconfig.n_layers) — 事前計算されたhidden-statesを保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems入力参照)。このモデルにpastとして渡されたトークンIDは、すでに計算済みのため、input_idsとして渡すべきではありません。
  • hidden_states (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層を持つモデルの場合は埋め込みの出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...], 省略可能, が返されるのは output_attentions=True が渡された場合、または config.output_attentions=True) — のタプル torch.Tensor ((各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length).

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

XLNetForQuestionAnsweringの出力型。

XLNetModel

class transformers.XLNetModel

< >

( config: XLNetConfig )

パラメータ

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

特定のヘッドを上に持たず、生のhidden-statesを出力する素のXlnetモデル。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetModelOutput or tuple(torch.Tensor)

パラメータ

  • 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 です。

    アテンションマスクとは?

  • mems (list[torch.Tensor] の長さ config.n_layers) — 事前計算済みの隠れ状態( mems 出力を参照)を保持します。逐次デコーディングを高速化するために使用できます。このモデルに過去が与えられたトークン ID は、すでに計算済みのため、 input_ids として渡すべきではありません。

    mems を利用するには、use_mems を True に設定する必要があります。

  • perm_mask (torch.Tensor 形状 (batch_size, sequence_length, sequence_length), 、オプション) — 各入力トークンのアテンションパターンを示すマスク。値は [0, 1]:
    • perm_mask[k, i, j] = 0 の場合、バッチ k において i は j にアテンションを行います。
    • perm_mask[k, i, j] = 1 の場合、バッチ k において i は j を注意しません。

    設定されていない場合、各トークンは他のすべてのトークンに注意を払います(完全双方向アテンション)。事前学習(ファクター化順序の定義)または逐次デコーディング(生成)のときにのみ使用されます。

  • target_mapping (torch.Tensor、形状 (batch_size, num_predict, sequence_length)、任意) — 使用する出力トークンを示すマスクです。target_mapping[k, i, j] = 1 の場合、バッチ k の i 番目の predict が j 番目のトークン上にあることを示します。事前学習時の部分予測や逐次デコーディング(生成)でのみ使用されます。
  • token_type_ids (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — 入力テキストの第1部分と第2部分を区別するためのセグメントトークンインデックス。インデックスは [0, 1]:
    • 0 は sentence A トークンに対応します。
    • 1 は sentence B トークンに対応します。

    トークンタイプIDとは?

  • input_mask (torch.Tensor 形状 batch_size, sequence_length, (オプション)) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 attention_mask, の負(実トークンが 0、パディングが 1 になる)であり、元のコードベースとの互換性を保つために保持されています。

    [0, 1] で選択されたマスク値:

    • マスクされたトークンに対して1
    • マスクされていないトークンに対しては 0

    input_maskとattention_maskは、どちらか一方のみ使用できます。

  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • use_mems (bool、任意) — シーケンシャルデコーディングを高速化するためにメモリ状態を使用するかどうか。True に設定すると、モデルは以前のフォワードパスの隠れ状態を使用してアテンションを計算します。これにより、シーケンシャルデコーディングタスクのパフォーマンスが大幅に向上する可能性があります。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

XLNetModelOutput または tuple(torch.Tensor)

torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または XLNetModelOutput。設定(XLNetConfig)と入力に応じて、さまざまな要素で構成されます。

XLNetModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • last_hidden_state (torch.Tensor、形状 (batch_size, num_predict, hidden_size)) — モデルの最終層における隠れ状態のシーケンス。

    num_predict は target_mapping.shape[1] に相当します。target_mapping が None の場合、num_predict は sequence_length に相当します。

  • mems (list[torch.Tensor]、長さは config.n_layers) — 事前計算された hidden-states を保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems 入力参照)。このモデルに past が与えられたトークン ID は、すでに計算済みのため、input_ids として渡すべきではありません。

  • hidden_states (tuple[torch.Tensor, ...]、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

XLNetLMHeadModel

class transformers.XLNetLMHeadModel

< >

( config: XLNetConfig )

パラメータ

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

入力埋め込みの重みと結合された線形層を上部に備えた言語モデリングヘッド付きのXLNetモデル。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs ) → XLNetLMHeadModelOutput or tuple(torch.Tensor)

パラメータ

  • 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 です。

    アテンションマスクとは?

  • mems (list[torch.Tensor] の長さ config.n_layers) — 事前計算済みの隠れ状態( mems 出力を参照)を保持します。逐次デコーディングを高速化するために使用できます。このモデルに過去が与えられたトークン ID は、すでに計算済みのため、 input_ids として渡すべきではありません。

    mems を利用するには、use_mems を True に設定する必要があります。

  • perm_mask (torch.Tensor 形状 (batch_size, sequence_length, sequence_length), 、オプション) — 各入力トークンのアテンションパターンを示すマスク。値は [0, 1]:
    • perm_mask[k, i, j] = 0 の場合、バッチ k において i は j にアテンションを行います。
    • perm_mask[k, i, j] = 1 の場合、バッチ k において i は j を注意しません。

    設定されていない場合、各トークンは他のすべてのトークンに注意を払います(完全双方向アテンション)。事前学習(ファクター化順序の定義)または逐次デコーディング(生成)のときにのみ使用されます。

  • target_mapping (torch.Tensor、形状 (batch_size, num_predict, sequence_length)、任意) — 使用する出力トークンを示すマスクです。target_mapping[k, i, j] = 1 の場合、バッチ k の i 番目の predict が j 番目のトークン上にあることを示します。事前学習時の部分予測や逐次デコーディング(生成)でのみ使用されます。
  • token_type_ids (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — 入力テキストの第1部分と第2部分を区別するためのセグメントトークンインデックス。インデックスは [0, 1]:
    • 0 は sentence A トークンに対応します。
    • 1 は sentence B トークンに対応します。

    トークンタイプIDとは?

  • input_mask (torch.Tensor 形状 batch_size, sequence_length, (オプション)) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 attention_mask, の負(実トークンが 0、パディングが 1 になる)であり、元のコードベースとの互換性を保つために保持されています。

    [0, 1] で選択されたマスク値:

    • マスクされたトークンに対して1
    • マスクされていないトークンに対しては 0

    input_maskとattention_maskは、どちらか一方のみ使用できます。

  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (torch.LongTensor の形状 (batch_size, num_predict), 、省略可) — マスク言語モデリング用のラベル。 num_predict は target_mapping.shape[1]. が target_mapping の場合 None, 、 num_predict は sequence_length.

    ラベルは、予測すべきマスクされた入力単語に対応し、target_mapping に依存します。標準的な自己回帰型言語モデリングを実行するには、input_ids に トークンを追加する必要があります(prepare_inputs_for_generation 関数および以下の例を参照してください)。

    インデックスは[-100, 0, ..., config.vocab_size]から選択されます。-100に設定されたすべてのラベルは無視され、損失は[0, ..., config.vocab_size]のラベルに対してのみ計算されます。

  • use_mems (bool、任意) — シーケンシャルデコーディングを高速化するためにメモリ状態を使用するかどうか。True に設定すると、モデルは以前のフォワードパスの隠れ状態を使用してアテンションを計算します。これにより、シーケンシャルデコーディングタスクのパフォーマンスが大幅に向上する可能性があります。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。
  • logits_to_keep (Union[int, torch.Tensor]、省略可、デフォルトは 0) — int の場合、最後の logits_to_keep トークンについて logits を計算します。0 の場合、すべての input_ids について logits を計算します(特殊ケース)。生成には最後のトークンの logits だけで十分であり、そのトークンのみについて計算することでメモリを節約できます。これは、長いシーケンスや大規模な語彙サイズの場合に特に顕著な効果があります。 torch.Tensor の場合、シーケンス長次元で保持するインデックスに対応する 1 次元テンソルである必要があります。これは、パックされたテンソル形式(バッチとシーケンス長を単一の次元にまとめた形式)を使用する場合に有用です。

戻り値

XLNetLMHeadModelOutput または tuple(torch.Tensor)

torch.Tensor のタプル、または XLNetLMHeadModelOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(XLNetConfig)と入力に応じて、さまざまな要素で構成されます。

XLNetLMHeadModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.Tensor、形状 (1,)、オプション、labels が指定された場合に返されます) — 言語モデリングの損失(次のトークンの予測用)。

  • logits (torch.Tensor、形状 (batch_size, num_predict, config.vocab_size)) — 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。

    num_predict は target_mapping.shape[1] に相当します。target_mapping が None の場合、num_predict は sequence_length に相当します。

  • mems (list[torch.Tensor]、長さは config.n_layers) — 事前計算された hidden-states を保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems 入力参照)。このモデルに past が与えられたトークン ID は、すでに計算済みのため、input_ids として渡すべきではありません。

  • hidden_states (tuple[torch.Tensor, ...]、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

>>> from transformers import AutoTokenizer, XLNetLMHeadModel
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetLMHeadModel.from_pretrained("xlnet/xlnet-large-cased")

>>> # We show how to setup inputs to predict a next token using a bi-directional context.
>>> input_ids = torch.tensor(
...     tokenizer.encode("Hello, my dog is very <mask>", add_special_tokens=False)
... ).unsqueeze(
...     0
... )  # We will predict the masked token
>>> perm_mask = torch.zeros((1, input_ids.shape[1], input_ids.shape[1]), dtype=torch.float)
>>> perm_mask[:, :, -1] = 1.0  # Previous tokens don't see last token
>>> target_mapping = torch.zeros(
...     (1, 1, input_ids.shape[1]), dtype=torch.float
... )  # Shape [1, 1, seq_length] => let's predict one token
>>> target_mapping[
...     0, 0, -1
... ] = 1.0  # Our first (and only) prediction will be the last token of the sequence (the masked token)

>>> outputs = model(input_ids, perm_mask=perm_mask, target_mapping=target_mapping)
>>> next_token_logits = outputs[
...     0
... ]  # Output has shape [target_mapping.size(0), target_mapping.size(1), config.vocab_size]

>>> # The same way can the XLNetLMHeadModel be used to be trained by standard auto-regressive language modeling.
>>> input_ids = torch.tensor(
...     tokenizer.encode("Hello, my dog is very <mask>", add_special_tokens=False)
... ).unsqueeze(
...     0
... )  # We will predict the masked token
>>> labels = torch.tensor(tokenizer.encode("cute", add_special_tokens=False)).unsqueeze(0)
>>> assert labels.shape[0] == 1, "only one word will be predicted"
>>> perm_mask = torch.zeros((1, input_ids.shape[1], input_ids.shape[1]), dtype=torch.float)
>>> perm_mask[
...     :, :, -1
... ] = 1.0  # Previous tokens don't see last token as is done in standard auto-regressive lm training
>>> target_mapping = torch.zeros(
...     (1, 1, input_ids.shape[1]), dtype=torch.float
... )  # Shape [1, 1, seq_length] => let's predict one token
>>> target_mapping[
...     0, 0, -1
... ] = 1.0  # Our first (and only) prediction will be the last token of the sequence (the masked token)

>>> outputs = model(input_ids, perm_mask=perm_mask, target_mapping=target_mapping, labels=labels)
>>> loss = outputs.loss
>>> next_token_logits = (
...     outputs.logits
... )  # Logits have shape [target_mapping.size(0), target_mapping.size(1), config.vocab_size]

XLNetForSequenceClassification

クラス transformers.XLNetForSequenceClassification

< >

( config: XLNetConfig )

パラメータ

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

シーケンス分類/回帰ヘッドを上部に備えた XLNet モデル(プーリングされた出力の上に線形層を配置したもの)。GLUE タスクなどに使用します。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForSequenceClassificationOutput or tuple(torch.Tensor)

パラメータ

  • 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 です。

    アテンションマスクとは?

  • mems (list[torch.Tensor] の長さ config.n_layers) — 事前計算済みの隠れ状態( mems 出力を参照)を保持します。逐次デコーディングを高速化するために使用できます。このモデルに過去が与えられたトークン ID は、すでに計算済みのため、 input_ids として渡すべきではありません。

    mems を利用するには、use_mems を True に設定する必要があります。

  • perm_mask (torch.Tensor 形状 (batch_size, sequence_length, sequence_length), 、オプション) — 各入力トークンのアテンションパターンを示すマスク。値は [0, 1]:
    • perm_mask[k, i, j] = 0 の場合、バッチ k において i は j にアテンションを行います。
    • perm_mask[k, i, j] = 1 の場合、バッチ k において i は j を注意しません。

    設定されていない場合、各トークンは他のすべてのトークンに注意を払います(完全双方向アテンション)。事前学習(ファクター化順序の定義)または逐次デコーディング(生成)のときにのみ使用されます。

  • target_mapping (torch.Tensor、形状 (batch_size, num_predict, sequence_length)、任意) — 使用する出力トークンを示すマスクです。target_mapping[k, i, j] = 1 の場合、バッチ k の i 番目の predict が j 番目のトークン上にあることを示します。事前学習時の部分予測や逐次デコーディング(生成)でのみ使用されます。
  • token_type_ids (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — 入力テキストの第1部分と第2部分を区別するためのセグメントトークンインデックス。インデックスは [0, 1]:
    • 0 は sentence A トークンに対応します。
    • 1 は sentence B トークンに対応します。

    トークンタイプIDとは?

  • input_mask (torch.Tensor 形状 batch_size, sequence_length, (オプション)) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 attention_mask, の負(実トークンが 0、パディングが 1 になる)であり、元のコードベースとの互換性を保つために保持されています。

    [0, 1] で選択されたマスク値:

    • マスクされたトークンに対して1
    • マスクされていないトークンに対しては 0

    input_maskとattention_maskは、どちらか一方のみ使用できます。

  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (torch.LongTensor、shape (batch_size,)、任意) — シーケンス分類/回帰の損失を計算するためのラベル。インデックスは [0, ..., config.num_labels - 1] の範囲である必要があります。config.num_labels == 1 の場合は回帰損失(平均二乗誤差)が計算され、config.num_labels > 1 の場合は分類損失(クロスエントロピー)が計算されます。
  • use_mems (bool、任意) — シーケンシャルデコーディングを高速化するためにメモリ状態を使用するかどうか。True に設定すると、モデルは以前のフォワードパスの隠れ状態を使用してアテンションを計算します。これにより、シーケンシャルデコーディングタスクのパフォーマンスが大幅に向上する可能性があります。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

XLNetForSequenceClassificationOutput または tuple(torch.Tensor)

torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または XLNetForSequenceClassificationOutput。設定(XLNetConfig)と入力に応じて、さまざまな要素で構成されます。

XLNetForSequenceClassificationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.Tensor、shape (1,)、optional、label が指定された場合に返されます) — 分類損失(config.num_labels==1 の場合は回帰損失)。

  • logits (torch.Tensor、形状 (batch_size, config.num_labels)) — SoftMax 適用前の分類(または config.num_labels==1 の場合は回帰)スコア。

  • mems (list[torch.Tensor]、長さは config.n_layers) — 事前計算された hidden-states を保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems 入力参照)。このモデルに past が与えられたトークン ID は、すでに計算済みのため、input_ids として渡すべきではありません。

  • hidden_states (tuple[torch.Tensor, ...]、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

単一ラベル分類の例:

>>> import torch
>>> from transformers import AutoTokenizer, XLNetForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForSequenceClassification.from_pretrained("xlnet/xlnet-large-cased")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = XLNetForSequenceClassification.from_pretrained("xlnet/xlnet-large-cased", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

マルチラベル分類の例:

>>> import torch
>>> from transformers import AutoTokenizer, XLNetForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForSequenceClassification.from_pretrained("xlnet/xlnet-large-cased", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = XLNetForSequenceClassification.from_pretrained(
...     "xlnet/xlnet-large-cased", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss

XLNetForMultipleChoice

class transformers.XLNetForMultipleChoice

< >

( config: XLNetConfig )

パラメータ

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

上位に多肢選択分類ヘッド(プーリングされた出力の上に線形層と softmax を配置したもの)を備えた Xlnet Model。RocStories/SWAG タスクなどに使用できます。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForMultipleChoiceOutput or tuple(torch.Tensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, num_choices, sequence_length)) — 語彙における入力シーケンスのトークンインデックス。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • token_type_ids (torch.LongTensor 形状 (batch_size, num_choices, sequence_length), 任意) — 入力の一部が第1部分か第2部分かを区別するためのセグメントトークンインデックス。インデックスは [0, 1]:
    • 0 は sentence A トークンに対応します。
    • 1 は sentence B トークンに対応します。

    トークンタイプIDとは?

  • input_mask (torch.Tensor の形状 batch_size, num_choices, sequence_length, 、オプション) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 attention_mask, の負、つまり実トークンが 0、パディングが 1 であり、元のコードベースとの互換性を保つために保持されています。

    [0, 1] で選択されたマスク値:

    • マスクされたトークンに対して1
    • マスクされていないトークンに対しては 0

    input_maskとattention_maskは、どちらか一方のみ使用できます。

  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • mems (list[torch.Tensor] の長さ config.n_layers) — 事前計算済みの隠れ状態( mems 出力を参照)を保持します。逐次デコーディングを高速化するために使用できます。このモデルに過去が与えられたトークン ID は、すでに計算済みのため、 input_ids として渡すべきではありません。

    mems を利用するには、use_mems を True に設定する必要があります。

  • perm_mask (torch.Tensor 形状 (batch_size, sequence_length, sequence_length), 、オプション) — 各入力トークンのアテンションパターンを示すマスク。値は [0, 1]:
    • perm_mask[k, i, j] = 0 の場合、バッチ k において i は j にアテンションを行います。
    • perm_mask[k, i, j] = 1 の場合、バッチ k において i は j を注意しません。

    設定されていない場合、各トークンは他のすべてのトークンに注意を払います(完全双方向アテンション)。事前学習(ファクター化順序の定義)または逐次デコーディング(生成)のときにのみ使用されます。

  • target_mapping (torch.Tensor、形状 (batch_size, num_predict, sequence_length)、任意) — 使用する出力トークンを示すマスクです。target_mapping[k, i, j] = 1 の場合、バッチ k の i 番目の predict が j 番目のトークン上にあることを示します。事前学習時の部分予測や逐次デコーディング(生成)でのみ使用されます。
  • inputs_embeds (torch.Tensor、形状 (batch_size, num_choices, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み検索行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (torch.LongTensor、形状 (batch_size,)、任意) — マルチクラス分類の損失を計算するためのラベル。インデックスは `[0, …,
  • use_mems (bool、任意) — シーケンシャルデコーディングを高速化するためにメモリ状態を使用するかどうか。True に設定すると、モデルは以前のフォワードパスの隠れ状態を使用してアテンションを計算します。これにより、シーケンシャルデコーディングタスクのパフォーマンスが大幅に向上する可能性があります。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

XLNetForMultipleChoiceOutput または tuple(torch.Tensor)

torch.Tensor のタプル、または XLNetForMultipleChoiceOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(XLNetConfig)と入力に応じて、さまざまな要素で構成されます。

XLNetForMultipleChoiceのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.Tensor、形状 (1,)、オプション、labels が指定された場合に返されます) — 分類損失。

  • logits (torch.Tensor、形状 (batch_size, num_choices)) — num_choices は入力テンソルの2番目の次元です(input_ids を参照)。

    分類スコア(SoftMax 適用前)。

  • mems (list[torch.Tensor]、長さは config.n_layers) — 事前計算された hidden-states を保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems 入力参照)。このモデルに past が与えられたトークン ID は、すでに計算済みのため、input_ids として渡すべきではありません。

  • hidden_states (tuple[torch.Tensor, ...]、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

>>> from transformers import AutoTokenizer, XLNetForMultipleChoice
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForMultipleChoice.from_pretrained("xlnet/xlnet-large-cased")

>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> labels = torch.tensor(0).unsqueeze(0)  # choice0 is correct (according to Wikipedia ;)), batch size 1

>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="pt", padding=True)
>>> outputs = model(**{k: v.unsqueeze(0) for k, v in encoding.items()}, labels=labels)  # batch size is 1

>>> # the linear classifier still needs to be trained
>>> loss = outputs.loss
>>> logits = outputs.logits

XLNetForTokenClassification

クラス transformers.XLNetForTokenClassification

< >

( config: XLNetConfig )

パラメータ

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

トークン分類ヘッド(hidden-states の出力上に配置された線形層)を備えた Xlnet トランスフォーマー。例として、名前実体認識(NER)タスクに使用されます。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForTokenClassificationOutput or tuple(torch.Tensor)

パラメータ

  • 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 です。

    アテンションマスクとは?

  • mems (list[torch.Tensor] の長さ config.n_layers) — 事前計算済みの隠れ状態( mems 出力を参照)を保持します。逐次デコーディングを高速化するために使用できます。このモデルに過去が与えられたトークン ID は、すでに計算済みのため、 input_ids として渡すべきではありません。

    mems を利用するには、use_mems を True に設定する必要があります。

  • perm_mask (torch.Tensor 形状 (batch_size, sequence_length, sequence_length), 、オプション) — 各入力トークンのアテンションパターンを示すマスク。値は [0, 1]:
    • perm_mask[k, i, j] = 0 の場合、バッチ k において i は j にアテンションを行います。
    • perm_mask[k, i, j] = 1 の場合、バッチ k において i は j を注意しません。

    設定されていない場合、各トークンは他のすべてのトークンに注意を払います(完全双方向アテンション)。事前学習(ファクター化順序の定義)または逐次デコーディング(生成)のときにのみ使用されます。

  • target_mapping (torch.Tensor、形状 (batch_size, num_predict, sequence_length)、任意) — 使用する出力トークンを示すマスクです。target_mapping[k, i, j] = 1 の場合、バッチ k の i 番目の predict が j 番目のトークン上にあることを示します。事前学習時の部分予測や逐次デコーディング(生成)でのみ使用されます。
  • token_type_ids (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — 入力テキストの第1部分と第2部分を区別するためのセグメントトークンインデックス。インデックスは [0, 1]:
    • 0 は sentence A トークンに対応します。
    • 1 は sentence B トークンに対応します。

    トークンタイプIDとは?

  • input_mask (torch.Tensor 形状 batch_size, sequence_length, (オプション)) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 attention_mask, の負(実トークンが 0、パディングが 1 になる)であり、元のコードベースとの互換性を保つために保持されています。

    [0, 1] で選択されたマスク値:

    • マスクされたトークンに対して1
    • マスクされていないトークンに対しては 0

    input_maskとattention_maskは、どちらか一方のみ使用できます。

  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (torch.LongTensor、shape (batch_size,)、任意) — マルチクラス分類の損失を計算するためのラベル。インデックスは [0, ..., num_choices] の範囲である必要があります。ここで num_choices は入力テンソルの2次元目のサイズです(上記の input_ids を参照)。
  • use_mems (bool, 省略可) — シーケンシャルデコーディングを高速化するためにメモリ状態を使用するかどうか。True に設定すると、モデルは以前のフォワードパスの隠れ状態を使用してアテンションを計算し、シーケンシャルデコーディングタスクのパフォーマンスを大幅に向上させることができます。シーケンシャルデコーディングを高速化するためのメモリ状態。True に設定すると、モデルは以前のフォワードパスの隠れ状態を使用してアテンションを計算し、シーケンシャルデコーディングタスクのパフォーマンスを大幅に向上させることができます。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

XLNetForTokenClassificationOutput または tuple(torch.Tensor)

torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または XLNetForTokenClassificationOutput。設定(XLNetConfig)と入力に応じて、さまざまな要素で構成されます。

XLNetForTokenClassificationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.Tensor、shape (1,)、optional、labels が指定された場合に返されます)— 分類損失。

  • logits (torch.Tensor、形状 (batch_size, sequence_length, config.num_labels)) — SoftMax 適用前の分類スコア。

  • mems (list[torch.Tensor]、長さは config.n_layers) — 事前計算された hidden-states を保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems 入力参照)。このモデルに past が与えられたトークン ID は、すでに計算済みのため、input_ids として渡すべきではありません。

  • hidden_states (tuple[torch.Tensor, ...]、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

>>> from transformers import AutoTokenizer, XLNetForTokenClassification
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForTokenClassification.from_pretrained("xlnet/xlnet-large-cased")

>>> inputs = tokenizer(
...     "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_token_class_ids = logits.argmax(-1)

>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
...

>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

XLNetForQuestionAnsweringSimple

class transformers.XLNetForQuestionAnsweringSimple

< >

( config: XLNetConfig )

パラメータ

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

SQuAD などの抽出型質問応答タスク向けに、span 分類ヘッドを上部に備えた XLNet モデル(hidden-states の出力上に線形レイヤーを配置し、span start logits と span end logits を計算します)。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForQuestionAnsweringSimpleOutput or tuple(torch.Tensor)

パラメータ

  • 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 です。

    アテンションマスクとは?

  • mems (list[torch.Tensor] の長さ config.n_layers) — 事前計算済みの隠れ状態( mems 出力を参照)を保持します。逐次デコーディングを高速化するために使用できます。このモデルに過去が与えられたトークン ID は、すでに計算済みのため、 input_ids として渡すべきではありません。

    mems を利用するには、use_mems を True に設定する必要があります。

  • perm_mask (torch.Tensor 形状 (batch_size, sequence_length, sequence_length), 、オプション) — 各入力トークンのアテンションパターンを示すマスク。値は [0, 1]:
    • perm_mask[k, i, j] = 0 の場合、バッチ k において i は j にアテンションを行います。
    • perm_mask[k, i, j] = 1 の場合、バッチ k において i は j を注意しません。

    設定されていない場合、各トークンは他のすべてのトークンに注意を払います(完全双方向アテンション)。事前学習(ファクター化順序の定義)または逐次デコーディング(生成)のときにのみ使用されます。

  • target_mapping (torch.Tensor、形状 (batch_size, num_predict, sequence_length)、任意) — 使用する出力トークンを示すマスクです。target_mapping[k, i, j] = 1 の場合、バッチ k の i 番目の predict が j 番目のトークン上にあることを示します。事前学習時の部分予測や逐次デコーディング(生成)でのみ使用されます。
  • token_type_ids (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — 入力テキストの第1部分と第2部分を区別するためのセグメントトークンインデックス。インデックスは [0, 1]:
    • 0 は sentence A トークンに対応します。
    • 1 は sentence B トークンに対応します。

    トークンタイプIDとは?

  • input_mask (torch.Tensor 形状 batch_size, sequence_length, (オプション)) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 attention_mask, の負(実トークンが 0、パディングが 1 になる)であり、元のコードベースとの互換性を保つために保持されています。

    [0, 1] で選択されたマスク値:

    • マスクされたトークンに対して1
    • マスクされていないトークンに対しては 0

    input_maskとattention_maskは、どちらか一方のみ使用できます。

  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • start_positions (torch.Tensor、形状 (batch_size,)、任意) — トークン分類損失の計算に使用する、ラベル付きスパンの開始位置(インデックス)のラベルです。 位置はシーケンスの長さ(sequence_length)にクランプされます。シーケンス外の位置は、損失の計算には考慮されません。
  • end_positions (torch.Tensor、形状 (batch_size,)、任意) — トークン分類損失の計算に使用する、ラベル付きスパンの終了位置(インデックス)のラベルです。 位置はシーケンスの長さ(sequence_length)にクランプされます。シーケンス外の位置は、損失の計算には考慮されません。
  • use_mems (bool、任意) — シーケンシャルデコーディングを高速化するためにメモリ状態を使用するかどうか。True に設定すると、モデルは以前のフォワードパスの隠れ状態を使用してアテンションを計算します。これにより、シーケンシャルデコーディングタスクのパフォーマンスが大幅に向上する可能性があります。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

XLNetForQuestionAnsweringSimpleOutput または tuple(torch.Tensor)

torch.Tensor のタプル、または XLNetForQuestionAnsweringSimpleOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(XLNetConfig)と入力に応じて、さまざまな要素で構成されます。

XLNetForQuestionAnsweringSimple の forward メソッドは、__call__ という特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.Tensor、形状 (1,)、任意、labels が指定された場合に返されます) — 総スパン抽出損失は、開始位置と終了位置の Cross-Entropy の和です。

  • start_logits (torch.Tensor、形状 (batch_size, sequence_length,)) — スパン開始スコア(SoftMax 適用前)。

  • end_logits (torch.Tensor、形状 (batch_size, sequence_length,)) — スパンの終了スコア(SoftMax 適用前)。

  • mems (list[torch.Tensor]、長さは config.n_layers) — 事前計算された hidden-states を保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems 入力参照)。このモデルに past が与えられたトークン ID は、すでに計算済みのため、input_ids として渡すべきではありません。

  • hidden_states (tuple[torch.Tensor, ...]、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

>>> from transformers import AutoTokenizer, XLNetForQuestionAnsweringSimple
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-large-cased")
>>> model = XLNetForQuestionAnsweringSimple.from_pretrained("xlnet/xlnet-large-cased")

>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"

>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()

>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
>>> tokenizer.decode(predict_answer_tokens, skip_special_tokens=True)
...

>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])

>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
...

XLNetForQuestionAnswering

クラス transformers.XLNetForQuestionAnswering

< >

( config: XLNetConfig )

パラメータ

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

SQuAD などの抽出型質問応答タスク向けに、スパン分類ヘッドを備えた Xlnet トランスフォーマー(隠れ状態の出力の上に線形層を置き、span start logits と span end logits を計算する)。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonemems: typing.Optional[torch.Tensor] = Noneperm_mask: typing.Optional[torch.Tensor] = Nonetarget_mapping: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinput_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneis_impossible: typing.Optional[torch.Tensor] = Nonecls_index: typing.Optional[torch.Tensor] = Nonep_mask: typing.Optional[torch.Tensor] = Noneuse_mems: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → XLNetForQuestionAnsweringOutput or tuple(torch.Tensor)

パラメータ

  • 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 です。

    アテンションマスクとは?

  • mems (list[torch.Tensor] の長さ config.n_layers) — 事前計算済みの隠れ状態( mems 出力を参照)を保持します。逐次デコーディングを高速化するために使用できます。このモデルに過去が与えられたトークン ID は、すでに計算済みのため、 input_ids として渡すべきではありません。

    mems を利用するには、use_mems を True に設定する必要があります。

  • perm_mask (torch.Tensor 形状 (batch_size, sequence_length, sequence_length), 、オプション) — 各入力トークンのアテンションパターンを示すマスク。値は [0, 1]:
    • perm_mask[k, i, j] = 0 の場合、バッチ k において i は j にアテンションを行います。
    • perm_mask[k, i, j] = 1 の場合、バッチ k において i は j を注意しません。

    設定されていない場合、各トークンは他のすべてのトークンに注意を払います(完全双方向アテンション)。事前学習(ファクター化順序の定義)または逐次デコーディング(生成)のときにのみ使用されます。

  • target_mapping (torch.Tensor、形状 (batch_size, num_predict, sequence_length)、任意) — 使用する出力トークンを示すマスクです。target_mapping[k, i, j] = 1 の場合、バッチ k の i 番目の predict が j 番目のトークン上にあることを示します。事前学習時の部分予測や逐次デコーディング(生成)でのみ使用されます。
  • token_type_ids (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — 入力テキストの第1部分と第2部分を区別するためのセグメントトークンインデックス。インデックスは [0, 1]:
    • 0 は sentence A トークンに対応します。
    • 1 は sentence B トークンに対応します。

    トークンタイプIDとは?

  • input_mask (torch.Tensor 形状 batch_size, sequence_length, (オプション)) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 attention_mask, の負(実トークンが 0、パディングが 1 になる)であり、元のコードベースとの互換性を保つために保持されています。

    [0, 1] で選択されたマスク値:

    • マスクされたトークンに対して1
    • マスクされていないトークンに対しては 0

    input_maskとattention_maskは、どちらか一方のみ使用できます。

  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • start_positions (torch.Tensor、形状 (batch_size,)、任意) — トークン分類損失の計算に使用する、ラベル付きスパンの開始位置(インデックス)のラベルです。 位置はシーケンスの長さ(sequence_length)にクランプされます。シーケンス外の位置は、損失の計算には考慮されません。
  • end_positions (torch.Tensor、形状 (batch_size,)、任意) — トークン分類損失の計算に使用する、ラベル付きスパンの終了位置(インデックス)のラベルです。 位置はシーケンスの長さ(sequence_length)にクランプされます。シーケンス外の位置は、損失の計算には考慮されません。
  • is_impossible (torch.LongTensor、形状 (batch_size,)、任意) — 質問に答えがあるかどうかのラベル(SQuAD 2.0)
  • cls_index (torch.LongTensor、shape (batch_size,)、任意) — 回答の妥当性を計算する入力として使用する、分類トークンの位置(インデックス)のラベル。
  • p_mask (torch.Tensor、形状 (batch_size, sequence_length)、任意) — 回答に含まれないトークンのマスク(例: [CLS]、[PAD] など)を指定します。1.0 はトークンをマスクすることを示し、0.0 はマスクしないことを示します。
  • use_mems (bool、任意) — シーケンシャルデコーディングを高速化するためにメモリ状態を使用するかどうか。True に設定すると、モデルは以前のフォワードパスの隠れ状態を使用してアテンションを計算します。これにより、シーケンシャルデコーディングタスクのパフォーマンスが大幅に向上する可能性があります。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

XLNetForQuestionAnsweringOutput または tuple(torch.Tensor)

torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または XLNetForQuestionAnsweringOutput。設定(XLNetConfig)と入力に応じて、さまざまな要素で構成されます。

XLNetForQuestionAnsweringのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.Tensor、shape (1,)、optional、start_positions と end_positions が両方指定された場合に返されます) — 開始トークン、終了トークン(指定された場合は is_impossible)の分類損失の合計としての分類損失。

  • start_top_log_probs (torch.Tensor、形状 (batch_size, config.start_n_top)、任意、start_positions または end_positions が指定されていない場合に返されます) — 開始トークンの上位 config.start_n_top 件の候補の対数確率(ビームサーチ)。

  • start_top_index (torch.LongTensor、shape (batch_size, config.start_n_top)、optional、start_positions または end_positions が指定されていない場合に返されます) — 上位 config.start_n_top 個の開始トークンの候補のインデックス(ビームサーチ)。

  • end_top_log_probs (torch.Tensor、形状 (batch_size, config.start_n_top * config.end_n_top)、任意、start_positions または end_positions が指定されていない場合に返されます) — 上位 config.start_n_top * config.end_n_top の終了トークンの可能性の対数確率(ビームサーチ)。

  • end_top_index(torch.LongTensor、形状 (batch_size, config.start_n_top * config.end_n_top)、任意、start_positions または end_positions が指定されていない場合に返されます)— 上位 config.start_n_top * config.end_n_top 個の終了トークンの候補のインデックス(ビームサーチ)。

  • cls_logits (torch.Tensor、形状 (batch_size,)、任意、start_positions または end_positions が指定されていない場合に返されます) — 回答の is_impossible ラベルに対する対数確率。

  • mems (list[torch.Tensor]、長さは config.n_layers) — 事前計算された hidden-states を保持します。シーケンシャルなデコーディングを高速化するために使用できます(mems 入力参照)。このモデルに past が与えられたトークン ID は、すでに計算済みのため、input_ids として渡すべきではありません。

  • hidden_states (tuple[torch.Tensor, ...]、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

>>> from transformers import AutoTokenizer, XLNetForQuestionAnswering
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("xlnet/xlnet-base-cased")
>>> model = XLNetForQuestionAnswering.from_pretrained("xlnet/xlnet-base-cased")

>>> input_ids = torch.tensor(tokenizer.encode("Hello, my dog is cute", add_special_tokens=True)).unsqueeze(
...     0
... )  # Batch size 1
>>> start_positions = torch.tensor([1])
>>> end_positions = torch.tensor([3])
>>> outputs = model(input_ids, start_positions=start_positions, end_positions=end_positions)

>>> loss = outputs.loss
Update on GitHub