Transformers documentation
FlauBERT
このモデルは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
< 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 = 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
< source >( 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
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → List[int]
シーケンス分類タスクにおいて、シーケンスまたはシーケンスのペアからモデルの入力を構築するために、特殊トークンを連結して追加します。XLMのシーケンスは、次の形式を持ちます:
- 単一シーケンス:
<s> X </s> - シーケンスのペア:
<s> A </s> B </s>
単一の文字列内のトークン(文字列)のシーケンスに変換します。
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → List[int]
特殊トークンが追加されていないトークンリストからシーケンスIDを取得します。このメソッドは、トークナイザーのprepare_for_modelメソッドを使用して特殊トークンを追加する際に呼び出されます。
FlaubertModel
クラス transformers.FlaubertModel
< source >( config: FlaubertConfig )
パラメータ
- config (FlaubertConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
特定のヘッドを付加せず、生の隠れ状態を出力する、素のFlaubertモデル。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - 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
< source >( config: FlaubertConfig )
パラメータ
- config (FlaubertConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
入力埋め込みの重みと共有される線形層を上部に備えた言語モデリングヘッド付きの Flaubert Model transformer。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- position_ids (
torch.Tensorの形状(batch_size, sequence_length), 、省略可) — 位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲[0, config.n_positions - 1]. - 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.logitsFlaubertForSequenceClassification
クラス transformers.FlaubertForSequenceClassification
< source >( config: FlaubertConfig )
パラメータ
- config (FlaubertConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
シーケンス分類/回帰ヘッド(プーリングされた出力の上に線形レイヤーを配置したもの)を備えた Flaubert モデル GLUE タスクなどが例として挙げられます。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- position_ids (
torch.Tensorの形状(batch_size, sequence_length), 、省略可) — 位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲[0, config.n_positions - 1]. - 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).lossFlaubertForMultipleChoice
class transformers.FlaubertForMultipleChoice
< source >( config: FlaubertConfig*inputs**kwargs )
パラメータ
- config (FlaubertConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
Flaubert モデルの上部に多肢選択分類ヘッド(プーリングされた出力の上に線形層と softmax を配置したもの)を備えたモデル。RocStories/SWAG タスクなどに使用されます。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- position_ids (
torch.LongTensorの形状(batch_size, num_choices, sequence_length), 、省略可) — 。位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲[0, config.max_position_embeddings - 1]. - 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.logitsFlaubertForTokenClassification
クラス transformers.FlaubertForTokenClassification
< source >( config: FlaubertConfig )
パラメータ
- config (FlaubertConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
トークン分類ヘッドを上部に備えたFlaubert transformer(隠れ状態の出力の上に線形層を配置したもの)。例えば、固有表現抽出(NER)タスクに使用できます。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- position_ids (
torch.Tensorの形状(batch_size, sequence_length), 、省略可) — 位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲[0, config.n_positions - 1]. - 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
< source >( config: FlaubertConfig )
パラメータ
- config (FlaubertConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
SQuAD などの抽出型質問応答タスク向けに、span start logits と span end logits を計算するために、隠れ状態の出力上に線形層を配置したスパン分類ヘッドを備えた Flaubert モデル。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- position_ids (
torch.Tensorの形状(batch_size, sequence_length), 、省略可) — 位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲[0, config.n_positions - 1]. - 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
< source >( config: FlaubertConfig )
パラメータ
- config (FlaubertConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
SQuAD などの抽出型質問応答タスク向けに、span start logits と span end logits を計算するために隠れ状態の出力上に線形層を配置したスパン分類ヘッドを備えた Flaubert transformer。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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()を参照してください。
- 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 トークンに対応します。
- position_ids (
torch.Tensorの形状(batch_size, sequence_length), 、省略可) — 位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲[0, config.n_positions - 1]. - 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