Transformers documentation

FlauBERT

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

and get access to the augmented documentation experience

to get started

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

FlauBERT

概要

FlauBERTモデルは、Hang Le氏らによる論文FlauBERT: Unsupervised Language Model Pre-training for Frenchで提案されました。これは、マスク言語モデリング(MLM)の目的関数(BERTと同様)を用いて事前学習されたtransformerモデルです。

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

言語モデルは、多くの異なる自然言語処理(NLP)タスクにおいて最先端の結果を達成するための重要なステップとなりました。現在利用可能な大量のラベルなしテキストを活用することで、文レベルでの文脈化を伴い、下流タスクのためにファインチューニングできる連続的な単語表現を事前学習するための効率的な手段を提供します。これは、文脈化された表現を用いた英語での研究(Dai and Le, 2015; Peters et al., 2018; Howard and Ruder, 2018; Radford et al., 2018; Devlin et al., 2019; Yang et al., 2019b)によって広く実証されています。本論文では、非常に大規模かつ異質なフランス語コーパスで学習されたモデル FlauBERT を紹介し、共有します。異なるサイズのモデルは、フランス国立科学研究センター(CNRS)の Jean Zay 超コンピュータを用いて訓練されました。私たちのフランス語言語モデルを多様な NLP タスク(テキスト分類、パラフレーズ、自然言語推論、パース、単語の曖昧性除去)に適用し、ほとんどの場合、他の事前学習アプローチを上回ることを示しました。FlauBERT の異なるバージョンと、下流タスクのための統合評価プロトコルである FLUE(French Language Understanding Evaluation)は、フランス語 NLP におけるさらなる再現可能な実験のために研究コミュニティに共有されています。

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

ヒント:

  • RoBERTaと同様に、文の順序予測を行わず(MLM目的のみで学習)します。

リソース

FlaubertConfig

class transformers.FlaubertConfig

< >

( 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 = Nonepre_norm: bool = Falselayerdrop: float | int = 0.0vocab_size: int = 30145emb_dim: int = 2048n_layers: int = 12n_heads: int = 16dropout: float | int = 0.1attention_dropout: float | int = 0.1gelu_activation: bool = Truesinusoidal_embeddings: bool = Falsecausal: bool = Falseasm: bool = Falsen_langs: int = 1use_lang_emb: bool = Truemax_position_embeddings: int = 512embed_init_std: float = 0.02209708691207961layer_norm_eps: float = 1e-12init_std: float = 0.02bos_index: int = 0eos_index: int = 1pad_index: int = 2unk_index: int = 3mask_index: int = 5is_encoder: bool = Truesummary_type: str = 'first'summary_use_proj: bool = Truesummary_activation: str | None = Nonesummary_proj_to_labels: bool = Truesummary_first_dropout: float | int = 0.1start_n_top: int = 5end_n_top: int = 5mask_token_id: int = 0lang_id: int = 0pad_token_id: int | None = 2bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 1tie_word_embeddings: bool = True )

パラメータ

  • pre_norm (bool、任意、デフォルトはFalse) — 各層において、attention に続く feed forward layer の前または後に layer normalization を適用するかどうかを指定します (Vaswani et al., Tensor2Tensor for Neural Machine Translation. 2018)。
  • layerdrop (Union[float, int]、任意、デフォルトは 0.0) — LayerDrop の確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。
  • vocab_size (int、任意、デフォルトは 30145) — モデルの語彙サイズです。input_ids で表現できるトークンの種類数を定義します。
  • emb_dim (int、任意、デフォルトは 2048) — 埋め込み層の次元数です。
  • n_layers (int、任意、デフォルトは12) — Transformerデコーダーの隠れ層の数です。
  • n_heads (int、任意、デフォルトは 16) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • dropout (Union[float, int]、任意、デフォルト値は0.1) — すべての dropout レイヤーの比率です。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.1) — アテンション確率のドロップアウト率です。
  • gelu_activation (bool、任意、デフォルトは True)— GeLU 活性化関数を使用するかどうか。
  • sinusoidal_embeddings (bool、任意、デフォルトは False) — 絶対位置埋め込みの代わりに、正弦波位置埋め込みを使用するかどうかを指定します。
  • causal (bool、省略可能、デフォルトは False) — モデルが因果的な挙動をするかどうかを指定します。因果モデルでは、双方向コンテキストではなく左側のコンテキストのみを注意するように、三角形の注意マスクを使用します。
  • asm (bool、任意、デフォルトは False) — 予測層に線形層ではなく、適応型 log softmax 投影層を使用するかどうかを指定します。
  • n_langs (int、任意、デフォルト値は 1)— モデルが処理する言語の数です。単一言語モデルの場合は 1 に設定します。
  • use_lang_emb (bool、任意、デフォルトは True) — 言語埋め込みを使用するかどうか。一部のモデルでは追加の言語埋め込みを使用します。その使用方法については、多言語モデルのページを参照してください。
  • embed_init_std (float、任意、デフォルトは 2048^-0.5) — 埋め込み行列の初期化に使用する truncated_normal_initializer の標準偏差です。
  • max_position_embeddings (int、任意、デフォルトは 512) — このモデルが使用される可能性のある最大シーケンス長です。
  • embed_init_std (float、任意、デフォルトは2048**-0.5) — 埋め込み層の初期化標準偏差です。
  • layer_norm_eps (float、任意、デフォルトは 1e-12) — レイヤーノーマル層で使用する epsilon です。
  • init_std (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • bos_index (int、任意、デフォルトは 0) — 語彙における文頭トークンのインデックスです。
  • eos_index (int、任意、デフォルトは 1) — 語彙における文の終了トークンのインデックスです。
  • pad_index (int, 省略可能、デフォルトは 2) — 語彙におけるパディングトークンのインデックスです。
  • unk_index (int、省略可能、デフォルト値は 3)— 語彙における未知トークンのインデックスです。
  • mask_index (int、任意、デフォルトは 5)— 語彙におけるマスキングトークンのインデックスです。
  • is_encoder (bool、省略可、デフォルトは True) — モデルがエンコーダーとして使用されるかどうかを示します。
  • summary_type (string, 省略可, デフォルト値は “first”) — シーケンスサマリーを行う際に使用される引数。シーケンス分類モデルや複数選択モデルで使用されます。 以下のいずれかのオプションを指定する必要があります:
    • "last": 最後のトークンの隠れ状態を取得します(XLNetと同様)。
    • "first": 最初のトークンの隠れ状態を取得します(BERTと同様)。
    • "mean": 全トークンの隠れ状態の平均を計算します。
    • "cls_index": 分類トークンの位置を示す Tensor を指定します(GPT/GPT-2 のように)。
    • "attn": 現在未実装です。マルチヘッドアテンションを使用してください。
  • summary_use_proj (bool、省略可、デフォルトは True) — シーケンスサマリーを行う際に使用される引数。シーケンス分類モデルおよび複数選択モデルで使用されます。 ベクトル抽出後に射影を追加するかどうかを指定します。
  • summary_activation (str, 任意) — シーケンスサマリーを行う際に使用する引数です。シーケンス分類モデルおよび複数選択モデルで使用されます。 "tanh" を渡すと出力に tanh 活性化が適用され、それ以外の値を渡すと活性化は適用されません。
  • summary_proj_to_labels (bool、任意、デフォルトは True) — シーケンス分類モデルおよび複数選択モデルで使用されます。 投影の出力が config.num_labels クラスを持つべきか、config.hidden_size クラスを持つべきかを指定します。
  • summary_first_dropout (float、任意、デフォルト値は 0.1) — シーケンス分類モデルおよび複数選択モデルで使用されます。 投影と活性化の後に適用する dropout の比率です。
  • start_n_top (int、省略可能、デフォルト値は 5)— SQuAD 評価スクリプトで使用されます。
  • end_n_top (int、省略可能、デフォルト値は 5) — SQuAD 評価スクリプトで使用されます。
  • mask_token_id (int、任意、デフォルト値は 0)— MLM の文脈でテキストを生成する際に、マスクされたトークンを識別するためのモデル非依存パラメータです。
  • lang_id (int、省略可能、デフォルトは 1) — モデルが使用する言語の ID です。このパラメータは、特定の言語でテキストを生成する際に使用されます。
  • pad_token_id (int、任意、デフォルトは 2) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int、任意、デフォルトは 0) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (Union[int, list[int]]、任意、デフォルトは 1) — 語彙内でストリーム終了に使用されるトークン ID。
  • tie_word_embeddings (bool、任意、デフォルトは True) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。

これはFlaubertModelの設定を保存するための設定クラスです。指定された引数に基づいてFlaubertモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、flaubert/flaubert_base_uncasedと類似した設定が得られます。

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

FlaubertTokenizer

class transformers.FlaubertTokenizer

< >

( vocab_filemerges_filedo_lowercase = Falseunk_token = '<unk>'bos_token = '<s>'sep_token = '</s>'pad_token = '<pad>'cls_token = '</s>'mask_token = '<special1>'additional_special_tokens = ['<special0>', '<special1>', '<special2>', '<special3>', '<special4>', '<special5>', '<special6>', '<special7>', '<special8>', '<special9>']lang2id = Noneid2lang = None**kwargs )

パラメータ

  • vocab_file (str) — 語彙ファイル。
  • merges_file (str) — Merges ファイル。
  • do_lowercase (bool、省略可能、デフォルトは False) — 小文字化を制御します。
  • unk_token (str、任意、デフォルトは "<unk>") — 不明トークンです。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。
  • bos_token (str, 省略可, デフォルトは "<s>") — 事前学習時に使用されたシーケンス開始トークン。シーケンス分類器のトークンとしても使用できます。

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

  • sep_token (str、任意、デフォルトは "</s>") — 区切りトークンです。複数のシーケンスからシーケンスを構築する際に使用されます。例えば、シーケンス分類では2つのシーケンス、質問応答ではテキストと質問です。また、特殊トークンを用いて構築されたシーケンスの最後のトークンとしても使用されます。
  • pad_token (str、任意、デフォルトは "<pad>") — パディングに使用されるトークンです。例えば、長さが異なるシーケンスをバッチ処理する際に使用します。
  • cls_token (str、任意、デフォルトは "</s>") — シーケンス分類(トークンごとの分類ではなく、シーケンス全体の分類)を行う際に使用される分類トークンです。特殊トークンを用いて構築された場合、シーケンスの最初のトークンになります。
  • mask_token (str、任意、デフォルトは "<special1>") — 値をマスクするために使用されるトークンです。これは、マスク言語モデリングでこのモデルを学習する際に使用されるトークンです。モデルが予測しようとする対象となるトークンです。
  • additional_special_tokens (List[str]、任意、デフォルトは ['<special0>', '<special1>', '<special2>', '<special3>', '<special4>', '<special5>', '<special6>', '<special7>', '<special8>', '<special9>']) — 追加の特殊トークンのリストです。
  • lang2id (Dict[str, int]、省略可) — 言語の文字列識別子をその ID にマッピングする辞書。
  • id2lang (Dict[int, str]、省略可) — 言語 ID をその文字列識別子にマッピングする辞書。

Flaubertのトークナイザーを構築します。Byte-Pair Encodingに基づいています。トークナイズ処理は以下の通りです。

  • Mosesによる前処理とトークン化。
  • すべての入力テキストを正規化します。
  • 引数special_tokensと関数set_special_tokensは、語彙に追加のシンボル(classifyなど)を追加するために使用できます。
  • 引数 do_lowercase は、小文字化を制御します(事前学習済み語彙では自動的に設定されます)。

このトークナイザーは、PreTrainedTokenizer を継承しており、主要なメソッドのほとんどが含まれています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

build_inputs_with_special_tokens

< >

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

パラメータ

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

戻り値

List[int]

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

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

  • 単一シーケンス: <s> X </s>
  • シーケンスのペア: <s> A </s> B </s>

convert_tokens_to_string

< >

( tokens )

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

get_special_tokens_mask

< >

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

パラメータ

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

戻り値

List[int]

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

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

FlaubertModel

クラス transformers.FlaubertModel

< >

( config: FlaubertConfig )

パラメータ

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

特定のヘッドを付加せず、生の隠れ状態を出力する、素のFlaubertモデル。

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonelengths: typing.Optional[torch.LongTensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.Tensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

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

    入力IDとは何ですか?

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

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

  • langs (torch.LongTensor 形状 (batch_size, sequence_length), 任意) — 入力内の各トークンの言語を示すために使用する、トークンの並列シーケンス。インデックスは言語 ID で、モデルの設定で提供される 2 つの変換マッピング(多言語モデルでのみ提供)を使用して、言語名から取得できます。具体的には、 言語名から言語 ID への変換 マッピングは model.config.lang2id ((文字列から整数への辞書)にあり、 言語 ID から言語名への変換 マッピングは model.config.id2lang ((整数から文字列への辞書)にあります。

    多言語ドキュメントに詳細な使用例が記載されています。

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

    トークンタイプIDとは?

  • position_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲 [0, config.n_positions - 1].

    ポジションIDとは?

  • lengths (torch.LongTensor、形状 (batch_size,)、任意) — パディングトークンインデックスに対するアテンションの計算を回避するために使用できる、各文の長さです。同じ結果を得るには attention_mask を使用することもできます(上記を参照)。互換性のために残されています。[0, ..., input_ids.size(-1)] から選択されたインデックス:
  • cache (dict[str, torch.Tensor]、任意) — モデルによって計算された事前計算済みヒドゥンステート(アテンションブロック内のキーとバリュー)をtorch.Tensorとして保持する文字列の辞書(cache出力を参照)。シーケンシャルデコーディングの高速化に使用できます。この辞書オブジェクトは、フォワードパス中に新たに計算されたヒドゥンステートを追加するためにインプレースで変更されます。
  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

BaseModelOutput または tuple(torch.Tensor)

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

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

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

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

  • 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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

FlaubertWithLMHeadModel

class transformers.FlaubertWithLMHeadModel

< >

( config: FlaubertConfig )

パラメータ

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

入力埋め込みの重みと共有される線形層を上部に備えた言語モデリングヘッド付きの Flaubert Model transformer。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MaskedLMOutput 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 です。

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

  • langs (torch.LongTensor 形状 (batch_size, sequence_length), 任意) — 入力内の各トークンの言語を示すために使用する、トークンの並列シーケンス。インデックスは言語 ID で、モデルの設定で提供される 2 つの変換マッピング(多言語モデルでのみ提供)を使用して、言語名から取得できます。具体的には、 言語名から言語 ID への変換 マッピングは model.config.lang2id ((文字列から整数への辞書)にあり、 言語 ID から言語名への変換 マッピングは model.config.id2lang ((整数から文字列への辞書)にあります。

    多言語ドキュメントに詳細な使用例が記載されています。

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

    トークンタイプIDとは?

  • position_ids (torch.Tensor の形状 (batch_size, sequence_length), 、省略可) — 位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲 [0, config.n_positions - 1].

    ポジションIDとは?

  • lengths (torch.LongTensor、形状 (batch_size,)、任意) — パディングトークンインデックスに対するアテンションの計算を回避するために使用できる、各文の長さです。同じ結果を得るには attention_mask を使用することもできます(上記を参照)。互換性のために残されています。[0, ..., input_ids.size(-1)] から選択されたインデックス:
  • cache (dict[str, torch.Tensor]、任意) — モデルによって計算された事前計算済みヒドゥンステート(アテンションブロック内のキーとバリュー)をtorch.Tensorとして保持する文字列の辞書(cache出力を参照)。シーケンシャルデコーディングの高速化に使用できます。この辞書オブジェクトは、フォワードパス中に新たに計算されたヒドゥンステートを追加するためにインプレースで変更されます。
  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (torch.LongTensor、形状 (batch_size, sequence_length)、任意) — 言語モデリング用のラベルです。モデル内部ではラベルがシフトされるため、labels = input_ids と設定できます。インデックスは [-100, 0, ..., config.vocab_size] から選択されます。-100 に設定されたすべてのラベルは無視(マスク)され、損失は [0, ..., config.vocab_size] 内のラベルに対してのみ計算されます。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

MaskedLMOutput または tuple(torch.Tensor)

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

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

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

  • loss (torch.Tensor、形状 (1,)、任意、labels が指定された場合に返されます) — マスクド言語モデリング (MLM) の損失。

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

  • 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, FlaubertWithLMHeadModel

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertWithLMHeadModel.from_pretrained("flaubert/flaubert_base_uncased")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs, labels=inputs["input_ids"])
>>> loss = outputs.loss
>>> logits = outputs.logits

FlaubertForSequenceClassification

クラス transformers.FlaubertForSequenceClassification

< >

( config: FlaubertConfig )

パラメータ

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

シーケンス分類/回帰ヘッド(プーリングされた出力の上に線形レイヤーを配置したもの)を備えた Flaubert モデル GLUE タスクなどが例として挙げられます。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → SequenceClassifierOutput 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 です。

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

  • langs (torch.LongTensor 形状 (batch_size, sequence_length), 任意) — 入力内の各トークンの言語を示すために使用する、トークンの並列シーケンス。インデックスは言語 ID で、モデルの設定で提供される 2 つの変換マッピング(多言語モデルでのみ提供)を使用して、言語名から取得できます。具体的には、 言語名から言語 ID への変換 マッピングは model.config.lang2id ((文字列から整数への辞書)にあり、 言語 ID から言語名への変換 マッピングは model.config.id2lang ((整数から文字列への辞書)にあります。

    多言語ドキュメントに詳細な使用例が記載されています。

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

    トークンタイプIDとは?

  • position_ids (torch.Tensor の形状 (batch_size, sequence_length), 、省略可) — 位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲 [0, config.n_positions - 1].

    ポジションIDとは?

  • lengths (torch.LongTensor、形状 (batch_size,)、任意) — パディングトークンのインデックスに対するアテンション計算を回避するために使用できる、各文の長さです。同じ結果を得るには attention_mask を使用することもできます(上記を参照)。互換性のために残されています。選択されるインデックスは [0, ..., input_ids.size(-1)] です。
  • cache (dict[str, torch.Tensor]、任意) — 事前計算されたKV状態を含むEncoderDecoderCacheのインスタンスです。シーケンシャルデコーディングを高速化するために使用できます。
  • 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 の場合は分類損失(クロスエントロピー)が計算されます。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

SequenceClassifierOutput または tuple(torch.Tensor)

torch.Tensor のタプル、またはreturn_dict=False が渡された場合、またはconfig.return_dict=False の場合、設定(FlaubertConfig)と入力に応じてさまざまな要素を含むSequenceClassifierOutput。

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

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

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

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

  • 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, FlaubertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased")

>>> 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 = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased", num_labels=num_labels)

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

マルチラベル分類の例:

>>> import torch
>>> from transformers import AutoTokenizer, FlaubertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased", 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 = FlaubertForSequenceClassification.from_pretrained(
...     "flaubert/flaubert_base_uncased", 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

FlaubertForMultipleChoice

class transformers.FlaubertForMultipleChoice

< >

( config: FlaubertConfig*inputs**kwargs )

パラメータ

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

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

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MultipleChoiceModelOutput or tuple(torch.Tensor)

パラメータ

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

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

    入力IDとは何ですか?

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

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

  • langs (torch.LongTensor 形状 (batch_size, num_choices, sequence_length), 省略可) — 入力内の各トークンの言語を示すために使用する、並列のトークンシーケンスです。インデックスは言語 ID で、モデルの構成で提供される 2 つの変換マッピング (多言語モデルでのみ提供) を使用して言語名から取得できます。具体的には、 言語名から言語 ID への マッピングは model.config.lang2id ((文字列から整数への辞書) にあり、 言語 ID から言語名への マッピングは model.config.id2lang ((整数から文字列への辞書) にあります。

    多言語ドキュメントに詳細な使用例が記載されています。

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

    トークンタイプIDとは?

  • position_ids (torch.LongTensor の形状 (batch_size, num_choices, sequence_length), 、省略可) — 。位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲 [0, config.max_position_embeddings - 1].

    ポジションIDとは?

  • lengths (torch.LongTensor、形状 (batch_size,)、任意) — パディングトークンのインデックスに対するアテンション計算を回避するために使用できる、各文の長さです。同じ結果を得るには attention_mask を使用することもできます(上記を参照)。互換性のために残されています。選択されるインデックスは [0, ..., input_ids.size(-1)] です。
  • cache (dict[str, torch.Tensor]、任意) — 事前計算されたKV状態を含むEncoderDecoderCacheのインスタンスです。シーケンシャルデコーディングを高速化するために使用できます。
  • inputs_embeds (torch.Tensor、形状 (batch_size, num_choices, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み検索行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (torch.LongTensor、shape (batch_size,)、任意) — マルチクラス分類の損失を計算するためのラベル。インデックスは [0, ..., num_choices-1] の範囲である必要があります。ここで num_choices は入力テンソルの2次元目のサイズです。(上記の input_ids を参照)
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

MultipleChoiceModelOutput または tuple(torch.Tensor)

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

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

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

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

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

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

  • 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, FlaubertForMultipleChoice
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForMultipleChoice.from_pretrained("flaubert/flaubert_base_uncased")

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

FlaubertForTokenClassification

クラス transformers.FlaubertForTokenClassification

< >

( config: FlaubertConfig )

パラメータ

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

トークン分類ヘッドを上部に備えたFlaubert transformer(隠れ状態の出力の上に線形層を配置したもの)。例えば、固有表現抽出(NER)タスクに使用できます。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → TokenClassifierOutput 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 です。

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

  • langs (torch.LongTensor 形状 (batch_size, sequence_length), 任意) — 入力内の各トークンの言語を示すために使用する、トークンの並列シーケンス。インデックスは言語 ID で、モデルの設定で提供される 2 つの変換マッピング(多言語モデルでのみ提供)を使用して、言語名から取得できます。具体的には、 言語名から言語 ID への変換 マッピングは model.config.lang2id ((文字列から整数への辞書)にあり、 言語 ID から言語名への変換 マッピングは model.config.id2lang ((整数から文字列への辞書)にあります。

    多言語ドキュメントに詳細な使用例が記載されています。

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

    トークンタイプIDとは?

  • position_ids (torch.Tensor の形状 (batch_size, sequence_length), 、省略可) — 位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲 [0, config.n_positions - 1].

    ポジションIDとは?

  • lengths (torch.LongTensor、形状 (batch_size,)、任意) — パディングトークンのインデックスに対するアテンション計算を回避するために使用できる、各文の長さです。同じ結果を得るには attention_mask を使用することもできます(上記を参照)。互換性のために残されています。選択されるインデックスは [0, ..., input_ids.size(-1)] です。
  • cache (dict[str, torch.Tensor]、任意) — 事前計算されたKV状態を含むEncoderDecoderCacheのインスタンスです。シーケンシャルデコーディングを高速化するために使用できます。
  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (torch.LongTensor、形状 (batch_size, sequence_length)、任意) — トークン分類の損失を計算するためのラベル。インデックスは [0, ..., config.num_labels - 1] の範囲である必要があります。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

TokenClassifierOutput または tuple(torch.Tensor)

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

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

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

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

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

  • 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, FlaubertForTokenClassification
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForTokenClassification.from_pretrained("flaubert/flaubert_base_uncased")

>>> 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)
...

FlaubertForQuestionAnsweringSimple

class transformers.FlaubertForQuestionAnsweringSimple

< >

( config: FlaubertConfig )

パラメータ

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

SQuAD などの抽出型質問応答タスク向けに、span start logits と span end logits を計算するために、隠れ状態の出力上に線形層を配置したスパン分類ヘッドを備えた Flaubert モデル。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → QuestionAnsweringModelOutput 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 です。

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

  • langs (torch.LongTensor 形状 (batch_size, sequence_length), 任意) — 入力内の各トークンの言語を示すために使用する、トークンの並列シーケンス。インデックスは言語 ID で、モデルの設定で提供される 2 つの変換マッピング(多言語モデルでのみ提供)を使用して、言語名から取得できます。具体的には、 言語名から言語 ID への変換 マッピングは model.config.lang2id ((文字列から整数への辞書)にあり、 言語 ID から言語名への変換 マッピングは model.config.id2lang ((整数から文字列への辞書)にあります。

    多言語ドキュメントに詳細な使用例が記載されています。

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

    トークンタイプIDとは?

  • position_ids (torch.Tensor の形状 (batch_size, sequence_length), 、省略可) — 位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲 [0, config.n_positions - 1].

    ポジションIDとは?

  • lengths (torch.LongTensor、形状 (batch_size,)、任意) — パディングトークンのインデックスに対するアテンション計算を回避するために使用できる、各文の長さです。同じ結果を得るには attention_mask を使用することもできます(上記を参照)。互換性のために残されています。選択されるインデックスは [0, ..., input_ids.size(-1)] です。
  • cache (dict[str, torch.Tensor]、任意) — 事前計算されたKV状態を含むEncoderDecoderCacheのインスタンスです。シーケンシャルデコーディングを高速化するために使用できます。
  • 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)にクランプされます。シーケンス外の位置は、損失の計算には考慮されません。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

QuestionAnsweringModelOutput または tuple(torch.Tensor)

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

FlaubertForQuestionAnsweringSimpleの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 適用前)。

  • 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, FlaubertForQuestionAnsweringSimple
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForQuestionAnsweringSimple.from_pretrained("flaubert/flaubert_base_uncased")

>>> 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)
...

FlaubertForQuestionAnswering

class transformers.FlaubertForQuestionAnswering

< >

( config: FlaubertConfig )

パラメータ

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

SQuAD などの抽出型質問応答タスク向けに、span start logits と span end logits を計算するために隠れ状態の出力上に線形層を配置したスパン分類ヘッドを備えた Flaubert transformer。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = 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] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → FlaubertForQuestionAnsweringOutput 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 です。

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

  • langs (torch.LongTensor 形状 (batch_size, sequence_length), 任意) — 入力内の各トークンの言語を示すために使用する、トークンの並列シーケンス。インデックスは言語 ID で、モデルの設定で提供される 2 つの変換マッピング(多言語モデルでのみ提供)を使用して、言語名から取得できます。具体的には、 言語名から言語 ID への変換 マッピングは model.config.lang2id ((文字列から整数への辞書)にあり、 言語 ID から言語名への変換 マッピングは model.config.id2lang ((整数から文字列への辞書)にあります。

    多言語ドキュメントに詳細な使用例が記載されています。

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

    トークンタイプIDとは?

  • position_ids (torch.Tensor の形状 (batch_size, sequence_length), 、省略可) — 位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲 [0, config.n_positions - 1].

    ポジションIDとは?

  • lengths (torch.LongTensor、形状 (batch_size,)、任意) — パディングトークンのインデックスに対するアテンション計算を回避するために使用できる、各文の長さです。同じ結果を得るには attention_mask を使用することもできます(上記を参照)。互換性のために残されています。選択されるインデックスは [0, ..., input_ids.size(-1)] です。
  • cache (dict[str, torch.Tensor]、任意) — 事前計算されたKV状態を含むEncoderDecoderCacheのインスタンスです。シーケンシャルデコーディングを高速化するために使用できます。
  • 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 はマスクしないことを示します。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

FlaubertForQuestionAnsweringOutput または tuple(torch.Tensor)

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

FlaubertForQuestionAnsweringの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 ラベルに対する対数確率。

  • 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, FlaubertForQuestionAnswering
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/xlm-mlm-en-2048")
>>> model = FlaubertForQuestionAnswering.from_pretrained("FacebookAI/xlm-mlm-en-2048")

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