Transformers documentation

SEW-D

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

このモデルは2021年9月14日にHF papersで公開され、2021年10月15日にHugging Face Transformersに貢献されました。

SEW-D

概要

SEW-D (Squeezed and Efficient Wav2Vec with Disentangled attention) は、Felix Wu、Kwangyoun Kim、Jing Pan、Kyu Han、Kilian Q. Weinberger、Yoav Artzi による Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speech Recognition で提案されました。

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

本論文は、自動音声認識(ASR)向け事前学習モデルにおける性能と効率のトレードオフに関する研究です。wav2vec 2.0 に焦点を当て、モデルの性能と効率の両方に影響を与えるいくつかのアーキテクチャ設計を形式化します。これらの観察結果を統合し、SEW(Squeezed and Efficient Wav2vec)を導入します。SEW は、多様な学習設定において、性能と効率の両面で大幅な改善を実現する事前学習モデルのアーキテクチャです。例えば、LibriSpeech における 100h-960h の半教師あり設定では、SEW は wav2vec 2.0 と比べて推論速度を 1.9 倍に向上させ、単語誤り率を相対的に 13.5% 削減します。同程度の推論時間において、SEW は異なるモデルサイズで単語誤り率を 25〜50% 削減します。

このモデルは anton-l によって提供されました。

使用のコツ

  • SEW-Dは、音声信号の生波形に対応するfloat配列を受け取る音声モデルです。
  • SEWDForCTC は、connectionist temporal classification (CTC) を用いてファインチューニングされるため、モデルの出力は Wav2Vec2CTCTokenizer を使用してデコードする必要があります。

リソース

SEWDConfig

class transformers.SEWDConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 32hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072squeeze_factor: int = 2max_position_embeddings: int = 512position_buckets: int = 256share_att_key: bool = Truerelative_attention: bool = Truepos_att_type: list[str] | tuple[str, ...] = ('p2c', 'c2p')norm_rel_ebd: str = 'layer_norm'hidden_act: str = 'gelu_python'hidden_dropout: float | int = 0.1activation_dropout: float | int = 0.1attention_dropout: float | int = 0.1feat_proj_dropout: float | int = 0.0final_dropout: float | int = 0.1initializer_range: float = 0.02layer_norm_eps: float = 1e-07feature_layer_norm_eps: float = 1e-05feat_extract_norm: str = 'group'feat_extract_activation: str = 'gelu'conv_dim: list[int] | tuple[int, ...] = (64, 128, 128, 128, 128, 256, 256, 256, 256, 512, 512, 512, 512)conv_stride: list[int] | tuple[int, ...] = (5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1)conv_kernel: list[int] | tuple[int, ...] = (10, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1)conv_bias: bool = Falsenum_conv_pos_embeddings: int = 128num_conv_pos_embedding_groups: int = 16apply_spec_augment: bool = Truemask_time_prob: float | int = 0.05mask_time_length: int = 10mask_time_min_masks: int = 2mask_feature_prob: float | int = 0.0mask_feature_length: int = 10mask_feature_min_masks: int = 0ctc_loss_reduction: str = 'mean'ctc_zero_infinity: bool = Falseuse_weighted_layer_sum: bool = Falseclassifier_proj_size: int = 256pad_token_id: int | None = 0bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2 )

パラメータ

  • vocab_size (int、任意、デフォルトは 32) — モデルの語彙サイズ。input_ids で表現できるトークンの種類数を定義します。
  • hidden_size (int、任意、デフォルトは 768) — 隠れ表現の次元数。
  • num_hidden_layers (int、任意、デフォルトは 12) — Transformer デコーダーの隠れ層の数。
  • num_attention_heads (int、任意、デフォルトは12) — Transformerデコーダーの各アテンション層におけるアテンションヘッドの数。
  • intermediate_size (int、任意、デフォルトは3072) — MLP 表現の次元数。
  • squeeze_factor (int、任意、デフォルトは 2) — エンコーダー後のシーケンス長のダウンサンプリング係数、およびトランスフォーマー後のアップサンプリング係数。
  • max_position_embeddings (int、任意、デフォルトは 512) — このモデルが使用される可能性のある最大シーケンス長です。
  • position_buckets (int、任意、デフォルトは 256)— 相対位置埋め込みの最大サイズです。
  • share_att_key (bool、任意、デフォルトは True) — c2p と p2c でアテンションキーを共有するかどうかを指定します。
  • relative_attention (bool、任意、デフォルトはTrue) — 相対位置エンコーディングを使用するかどうか。
  • pos_att_type (tuple[str]、任意、デフォルトは ("p2c", "c2p")) — 相対位置アテンションのタイプです。("p2c", "c2p") の組み合わせを指定でき、例えば ("p2c")、 ("p2c", "c2p")、("p2c", "c2p") のように指定します。
  • norm_rel_ebd (str、任意、デフォルトは "layer_norm") — 相対埋め込みで Layer Norm を使用するかどうか(使用する場合は "layer_norm")
  • hidden_act (str、任意、デフォルトは gelu_python) — デコーダーで使用する非線形活性化関数(関数または文字列)です。例えば、"gelu"、"relu"、"silu" などです。
  • hidden_dropout (Union[float, int]、省略可、デフォルトは 0.1) — embeddings、encoder、pooler 内のすべての全結合層における dropout 確率です。
  • activation_dropout (Union[float, int]、任意、デフォルトは 0.1) — 全結合層内の活性化の dropout 率です。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.1) — アテンション確率のドロップアウト率です。
  • feat_proj_dropout (float、任意、デフォルト値は 0.0) — 特徴量エンコーダーの出力に対する dropout 確率です。
  • final_dropout (float、任意、デフォルト値は 0.1) — SEWDForCTC の最終的な投影層における dropout の確率です。
  • initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • layer_norm_eps (float、任意、デフォルトは 1e-07) — レイヤーノーマル層で使用する epsilon です。
  • feature_layer_norm_eps (float, 任意、デフォルトは 1e-5) — 特徴量エンコーダーの後に適用される層正規化で使用する epsilon です。
  • feat_extract_norm (str、任意、デフォルトは "group") — 特徴量エンコーダー内の1次元畳み込み層に適用される正規化の種類。"group" は最初の1次元畳み込み層のみに対する group normalization、"layer" はすべての1次元畳み込み層に対する layer normalization を指定します。
  • feat_extract_activation (str, optional, defaults to “gelu”) -- The non-linear activation function (function or string) in the 1D convolutional layers of the feature extractor. If string, “gelu”, “relu”, “selu”and“gelu_new”` are supported.
  • conv_dim (tuple[int] または list[int]、省略可能、デフォルトは (64, 128, 128, 128, 128, 256, 256, 256, 256, 512, 512, 512, 512)) — 特徴量エンコーダー内の各1次元畳み込み層の入力チャネル数と出力チャネル数を定義する整数のタプルです。conv_dim の長さが、1次元畳み込み層の数を定義します。
  • conv_stride (tuple[int] または list[int]、任意、デフォルトは (5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1)) — 特徴量エンコーダー内の各 1 次元畳み込み層のストライドを定義する整数のタプルです。conv_stride の長さが畳み込み層の数を定義し、conv_dim の長さと一致する必要があります。
  • conv_kernel (tuple[int] または list[int]、任意、デフォルトは (10, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1)) — 特徴量エンコーダー内の各1次元畳み込み層のカーネルサイズを定義する整数のタプルです。conv_kernel の長さが畳み込み層の数を定義し、conv_dim の長さと一致する必要があります。
  • conv_bias (bool、任意、デフォルトはFalse) — 1次元畳み込み層にバイアスがあるかどうか。
  • num_conv_pos_embeddings (int、任意、デフォルト値は 128) — 畳み込み位置埋め込みの数。1 次元畳み込み位置埋め込みレイヤーのカーネルサイズを定義します。
  • num_conv_pos_embedding_groups (int、任意、デフォルト値は 16) — 1 次元畳み込み位置埋め込み層のグループ数。
  • apply_spec_augment (bool、任意、デフォルトは True) — 特徴量エンコーダーの出力に SpecAugment データ拡張を適用するかどうか。参考として、SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition を参照してください。
  • mask_time_prob (float, optional, defaults to 0.05) — Percentage (between 0 and 1) of all feature vectors along the time axis which will be masked. The masking procedure generates ”mask_time_problen(time_axis)/mask_time_length” independent masks over the axis. If reasoning from the probability of each feature vector to be chosen as the start of the vector span to be masked, mask_time_prob should be `prob_vector_startmask_time_length. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if apply_spec_augment is True`.
  • mask_time_length (int、任意、デフォルトは 10) — 時間軸に沿ったベクトル範囲の長さ。
  • mask_time_min_masks (int, 任意、デフォルトは 2)、— 時間軸に沿って生成される、長さ mask_feature_length のマスクの最小数です。各タイムステップについて、mask_feature_prob を無視して適用されます。”mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks” の場合のみ関連します。
  • mask_feature_prob (float, optional, defaults to 0.0) — Percentage (between 0 and 1) of all feature vectors along the feature axis which will be masked. The masking procedure generates ”mask_feature_problen(feature_axis)/mask_time_length” independent masks over the axis. If reasoning from the probability of each feature vector to be chosen as the start of the vector span to be masked, mask_feature_prob should be `prob_vector_startmask_feature_length. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if apply_spec_augment is True`.
  • mask_feature_prob (Union[float, int]、任意、デフォルト値は 0.0) — 特徴軸に沿った全特徴ベクトルの中で、マスクされる割合(0 から 1 の間)。 マスク処理では、軸に対して mask_feature_prob*len(feature_axis)/mask_time_length 個の独立したマスクが生成されます。 マスクされるベクトル範囲の開始点として各特徴ベクトルが選択される確率から考えると、mask_feature_prob は prob_vector_start*mask_feature_length であるべきです。 重複により、実際にマスクされるベクトルの割合が減少する可能性があります。これは apply_spec_augment が True の場合にのみ関連します。
  • mask_feature_length (int、任意、デフォルト値は 10)— 特徴量軸に沿ったベクトル範囲の長さ。
  • mask_feature_min_masks (int, 任意、デフォルトは 0)、— mask_feature_prob に関係なく、各タイムステップにおいて、特徴量軸に沿って生成される長さ mask_feature_length のマスクの最小数です。”mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks” の場合にのみ関連します。
  • diversity_loss_weight (int、任意、デフォルトは 0.1)— コードブック多様性損失の重みです。
  • ctc_loss_reduction (str、省略可、デフォルトは mean) — torch.nn.CTCLoss の出力に適用する集約方法を指定します。学習時のみ関連します。
  • ctc_zero_infinity (bool、任意、デフォルトは False) — torch.nn.CTCLoss の無限損失および関連する勾配をゼロにするかどうか。無限損失は、入力がターゲットにアラインされるほど短すぎる場合に主に発生します。SEWDForCTC のインスタンスをトレーニングする場合にのみ関連します。
  • use_weighted_layer_sum (bool、任意、デフォルトはFalse) — 学習された重みを用いた層出力の加重平均を使用するかどうか。Wav2Vec2ForSequenceClassification のインスタンスを使用する場合にのみ関連します。
  • classifier_proj_size (int、任意、デフォルトは 256) — 分類のためのトークン平均プーリング前の射影の次元数。
  • pad_token_id (int、任意、デフォルトは 0) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int、任意、デフォルトは 1) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (Union[int, list[int]]、任意、デフォルトは 2) — 語彙内でストリーム終了に使用されるトークン ID。

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

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

例:

>>> from transformers import SEWDConfig, SEWDModel

>>> # Initializing a SEW-D asapp/sew-d-tiny-100k style configuration
>>> configuration = SEWDConfig()

>>> # Initializing a model (with random weights) from the asapp/sew-d-tiny-100k style configuration
>>> model = SEWDModel(configuration)

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

SEWDModel

class transformers.SEWDModel

< >

( config: SEWDConfig )

パラメータ

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

裸の Sew D Modelは、特定のヘッドを上に載せず、生の隠れ状態を出力します。

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

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

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonemask_time_indices: typing.Optional[torch.FloatTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.FloatTensor)

パラメータ

  • input_values (torch.Tensor、shape (batch_size, sequence_length)、任意) — 入力生の音声波形の浮動小数点数値。値は、.flac または .wav 形式のオーディオファイルを list[float]、numpy.ndarray、または torch.Tensor 型の配列として読み込むことで取得できます。例えば、torchcodec ライブラリ(pip install torchcodec)や soundfile ライブラリ(pip install soundfile)を通じて取得できます。 配列を input_values に整えるには、パディングと torch.FloatTensor 型への変換のために AutoProcessor を使用してください。詳細は Wav2Vec2Processor.call() を参照してください。
  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

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

  • mask_time_indices (torch.BoolTensor、shape (batch_size, sequence_length)、任意) — 対比損失のために抽出特徴をマスクするインデックスです。学習モードの場合、モデルは config.proj_codevector_dim 空間におけるマスクされた抽出特徴を予測するように学習します。

戻り値

BaseModelOutput または tuple(torch.FloatTensor)

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

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

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

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

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

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

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

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

SEWDForCTC

クラス transformers.SEWDForCTC

< >

( config: SEWDConfigtarget_lang: str | None = None )

パラメータ

  • config (SEWDConfig) — モデルのパラメータをすべて含む、モデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
  • target_lang (str, 任意) — アダプター重みの言語 ID。アダプター重みは adapter..safetensors または adapter..bin の形式で保存されます。SEWDForCTC のインスタンスをアダプターと併用する場合にのみ関連します。デフォルトでは ‘eng’ が使用されます。

Connectionist Temporal Classification (CTC) 用の language modeling ヘッドを上部に備えた SEW-D モデル。

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

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

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutput or tuple(torch.FloatTensor)

パラメータ

  • input_values (torch.Tensor、shape (batch_size, sequence_length)、任意) — 入力生の音声波形の浮動小数点数値。値は、.flac または .wav 形式のオーディオファイルを list[float]、numpy.ndarray、または torch.Tensor 型の配列として読み込むことで取得できます。例えば、torchcodec ライブラリ(pip install torchcodec)や soundfile ライブラリ(pip install soundfile)を通じて取得できます。 配列を input_values に整えるには、パディングと torch.FloatTensor 型への変換のために AutoProcessor を使用してください。詳細は Wav2Vec2Processor.call() を参照してください。
  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

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

  • labels (torch.LongTensor、shape (batch_size, target_length)、任意) — Connectionist Temporal Classification 用のラベルです。target_length は、出力 logits のシーケンス長以下である必要があります。インデックスは [-100, 0, ..., config.vocab_size - 1] から選択されます。-100 に設定されたすべてのラベルは無視(マスク)され、損失は [0, ..., config.vocab_size - 1] 内のラベルに対してのみ計算されます。

戻り値

CausalLMOutput または tuple(torch.FloatTensor)

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

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

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

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

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

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

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

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

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

例:

>>> from transformers import AutoProcessor, SEWDForCTC
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("BAAI/seggpt-vit-large")
>>> model = SEWDForCTC.from_pretrained("BAAI/seggpt-vit-large")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...

>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids

>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...

SEWDForSequenceClassification

class transformers.SEWDForSequenceClassification

< >

( config: SEWDConfig )

パラメータ

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

SUPERB Keyword Spottingなどのタスク向けに、プーリングされた出力の上にシーケンス分類ヘッド(線形層)を配置したSEWDモデル

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

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

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.FloatTensor)

パラメータ

  • input_values (torch.FloatTensor、shape (batch_size, sequence_length)) — 入力生の音声波形の浮動小数点値。値は、.flac または .wav 形式のオーディオファイルを読み込み、list[float]、numpy.ndarray、または torch.Tensor 型の配列に変換することで取得できます。例えば、torchcodec ライブラリ(pip install torchcodec)や soundfile ライブラリ(pip install soundfile)を通じて行います。 配列を input_values に整えるには、パディングと torch.FloatTensor 型へのテンソル変換のために AutoProcessor を使用してください。詳細は SEWDProcessor.__call__ を参照してください。
  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

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

  • labels (torch.LongTensor、shape (batch_size,)、任意) — シーケンス分類/回帰の損失を計算するためのラベル。インデックスは [0, ..., config.num_labels - 1] の範囲である必要があります。config.num_labels == 1 の場合は回帰損失(平均二乗誤差)が計算され、config.num_labels > 1 の場合は分類損失(クロスエントロピー)が計算されます。

戻り値

SequenceClassifierOutput または tuple(torch.FloatTensor)

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

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

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

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

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

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

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

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

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

単一ラベル分類の例:

>>> import torch
>>> from transformers import AutoTokenizer, SEWDForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("BAAI/seggpt-vit-large")
>>> model = SEWDForSequenceClassification.from_pretrained("BAAI/seggpt-vit-large")

>>> 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 = SEWDForSequenceClassification.from_pretrained("BAAI/seggpt-vit-large", num_labels=num_labels)

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

マルチラベル分類の例:

>>> import torch
>>> from transformers import AutoTokenizer, SEWDForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("BAAI/seggpt-vit-large")
>>> model = SEWDForSequenceClassification.from_pretrained("BAAI/seggpt-vit-large", 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 = SEWDForSequenceClassification.from_pretrained(
...     "BAAI/seggpt-vit-large", 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
Update on GitHub