Transformers documentation
XLNet
このモデルは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
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 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 toFalse) — 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.configXLNetTokenizer
クラス transformers.XLNetTokenizer
< source >( 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
< source >( 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]
特殊トークンが追加されていないトークンリストからシーケンスIDを取得します。
高速なトークナイザーでは、データコラテーターはalready_has_special_tokens=Trueを指定してこれを呼び出し、すでに整形済みのシーケンスに対してマスクを構築します。その場合、all_special_idsへの所属を確認することによってマスクを計算します。
XLNet固有の出力
クラス transformers.models.xlnet.modeling_xlnet.XLNetModelOutput
< source >( 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
< source >( 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
< source >( 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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
class transformers.models.xlnet.modeling_xlnet.XLNetForMultipleChoiceOutput
< source >( 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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
クラス transformers.models.xlnet.modeling_xlnet.XLNetForTokenClassificationOutput
< source >( 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
< source >( 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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
クラス transformers.models.xlnet.modeling_xlnet.XLNetForQuestionAnsweringOutput
< source >( 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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
XLNetModel
class transformers.XLNetModel
< source >( config: XLNetConfig )
パラメータ
- config (XLNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
特定のヘッドを上に持たず、生のhidden-statesを出力する素のXlnetモデル。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- 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
< source >( config: XLNetConfig )
パラメータ
- config (XLNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
入力埋め込みの重みと結合された線形層を上部に備えた言語モデリングヘッド付きのXLNetモデル。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- 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
< source >( config: XLNetConfig )
パラメータ
- config (XLNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
シーケンス分類/回帰ヘッドを上部に備えた XLNet モデル(プーリングされた出力の上に線形層を配置したもの)。GLUE タスクなどに使用します。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- 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).lossXLNetForMultipleChoice
class transformers.XLNetForMultipleChoice
< source >( config: XLNetConfig )
パラメータ
- config (XLNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
上位に多肢選択分類ヘッド(プーリングされた出力の上に線形層と softmax を配置したもの)を備えた Xlnet Model。RocStories/SWAG タスクなどに使用できます。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- token_type_ids (
torch.LongTensor形状(batch_size, num_choices, sequence_length), 任意) — 入力の一部が第1部分か第2部分かを区別するためのセグメントトークンインデックス。インデックスは[0, 1]:- 0 は sentence A トークンに対応します。
- 1 は sentence B トークンに対応します。
- 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.logitsXLNetForTokenClassification
クラス transformers.XLNetForTokenClassification
< source >( config: XLNetConfig )
パラメータ
- config (XLNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
トークン分類ヘッド(hidden-states の出力上に配置された線形層)を備えた Xlnet トランスフォーマー。例として、名前実体認識(NER)タスクに使用されます。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- 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
< source >( 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
< source >( 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()を参照してください。
- 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 トークンに対応します。
- 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
< source >( config: XLNetConfig )
パラメータ
- config (XLNetConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
SQuAD などの抽出型質問応答タスク向けに、スパン分類ヘッドを備えた Xlnet トランスフォーマー(隠れ状態の出力の上に線形層を置き、span start logits と span end logits を計算する)。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- 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