Transformers 文档
M-CTC-T
并获得增强的文档体验
开始使用
M-CTC-T
该模型仅处于维护模式,因此我们不会接受任何更改其代码的新 PR。
如果在运行此模型时遇到任何问题,请重新安装支持此模型的最后一个版本:v4.30.0。您可以通过运行以下命令进行安装:`pip install -U transformers==4.30.0`。
概述
M-CTC-T 模型由 Loren Lugosch、Tatiana Likhomanenko、Gabriel Synnaeve 和 Ronan Collobert 在 《用于大规模多语言语音识别的伪标签》中提出。该模型是一个 1B 参数的 Transformer 编码器,具有一个 CTC 头,用于 8065 个字符标签,以及一个语言识别头,用于 60 个语言 ID 标签。它在 Common Voice(版本 6.1,2020 年 12 月发布)和 VoxPopuli 上进行训练。在 Common Voice 和 VoxPopuli 上训练之后,模型仅在 Common Voice 上进行训练。标签是未标准化的字符级转录(未移除标点符号和大小写)。模型将 16Khz 音频信号中的 Mel 滤波器组特征作为输入。
论文摘要如下:
通过伪标签进行的半监督学习已成为最先进单语语音识别系统的主要方法。在这项工作中,我们将伪标签扩展到包含 60 种语言的大规模多语言语音识别。我们提出了一种简单的伪标签方案,即使对于低资源语言也效果很好:训练一个监督多语言模型,使用目标语言的半监督学习对其进行微调,为该语言生成伪标签,然后使用所有语言的伪标签训练最终模型,无论是从头开始还是通过微调。在 Common Voice 标记数据集和 VoxPopuli 未标记数据集上的实验表明,我们的方案可以生成一个在许多语言上表现更好并且也能很好地迁移到 LibriSpeech 的模型。
使用技巧
该模型的 PyTorch 版本仅在 torch 1.9 及更高版本中可用。
资源
MCTCTConfig
class transformers.MCTCTConfig
< 来源 >( 词汇表大小 = 8065 隐藏层大小 = 1536 隐藏层数量 = 36 中间层大小 = 6144 注意力头数量 = 4 注意力头维度 = 384 最大位置嵌入 = 920 层归一化epsilon = 1e-05 层丢弃 = 0.3 隐藏层激活函数 = 'relu' 初始化范围 = 0.02 隐藏层dropout概率 = 0.3 注意力概率dropout概率 = 0.3 填充token ID = 1 起始token ID = 0 结束token ID = 2 卷积GLU维度 = 1 卷积dropout = 0.3 卷积层数量 = 1 卷积核 = (7,) 卷积步长 = (3,) 每通道输入特征 = 80 输入通道数 = 1 卷积通道数 = None CTC损失缩减 = 'sum' CTC零无穷大 = False **kwargs )
参数
- vocab_size (
int
, 可选, 默认为 8065) — M-CTC-T 模型的词汇表大小。定义了在调用 MCTCTModel 时通过inputs_ids
表示的不同 token 的数量。 - hidden_size (
int
, 可选, 默认为 1536) — 编码器层和池化层的维度。 - num_hidden_layers (
int
, 可选, 默认为 36) — Transformer 编码器中的隐藏层数量。 - intermediate_size (
int
, 可选, 默认为 6144) — Transformer 编码器中“中间”(即,前馈)层的维度。 - num_attention_heads (
int
, 可选, 默认为 4) — Transformer 编码器中每个注意力层的注意力头数量。 - attention_head_dim (
int
, 可选, 默认为 384) — Transformer 编码器中每个注意力层每个注意力头的维度。 - max_position_embeddings (
int
, 可选, 默认为 920) — 该模型可能使用的最大序列长度(在对数梅尔频谱图提取之后)。 - layer_norm_eps (
float
, 可选, 默认为 1e-05) — 层归一化层使用的 epsilon 值。 - layerdrop (
float
, 可选, 默认为 0.3) — 训练期间丢弃编码器层的概率。默认值 0.3 用于原始实现。 - hidden_act (
str
或function
, 可选, 默认为"relu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。 - initializer_range (
float
, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。 - hidden_dropout_prob (
float
, 可选, 默认为 0.3) — 嵌入、编码器和池化器中所有全连接层的 dropout 概率。 - attention_probs_dropout_prob (
float
, 可选, 默认为 0.3) — 注意力概率的 dropout 比率。 - pad_token_id (
int
, 可选, 默认为 1) — 填充 token 的分词器索引。 - bos_token_id (
int
, 可选, 默认为 0) — 起始 token 的分词器索引。 - eos_token_id (
int
, 可选, 默认为 2) — 结束 token 的分词器索引。 - conv_glu_dim (
int
, 可选, 默认为 1) — 在其中应用 GLU 的Conv1dSubsampler
层输出的维度。尽管原始 Flashlight 代码使用 2,但由于转置差异,此处适配为 1。 - conv_dropout (
int
, 可选, 默认为 0.3) — 训练期间随机丢弃Conv1dSubsampler
层的概率。 - num_conv_layers (
int
, 可选, 默认为 1) — 应用 Transformer 编码器层之前的卷积层数量。 - conv_kernel (
Sequence[int]
, 可选, 默认为(7,)
) — 应用 Transformer 层之前的一维卷积的核大小。len(conv_kernel)
必须等于num_conv_layers
。 - conv_stride (
Sequence[int]
, 可选, 默认为(3,)
) — 应用 Transformer 层之前的一维卷积的步长。len(conv_stride)
必须等于num_conv_layers
。 - input_feat_per_channel (
int
, 可选, 默认为 80) — Conv1D 层输入的通道特征维度。 - input_channels (
int
, 可选, 默认为 1) — Conv1D 层输入的输入通道数。 - conv_channels (
list[int]
, 可选) — 中间 Conv1D 层的通道大小。 - ctc_loss_reduction (
str
, 可选, 默认为"sum"
) — 指定应用于torch.nn.CTCLoss
输出的缩减类型。仅在训练 MCTCTForCTC 实例时相关。 - ctc_zero_infinity (
bool
, 可选, 默认为False
) — 是否将无穷大损失和torch.nn.CTCLoss
相关梯度归零。无穷大损失主要在输入太短无法与目标对齐时发生。仅在训练 MCTCTForCTC 实例时相关。
这是存储 MCTCTModel 配置的配置类。它用于根据指定的参数实例化一个 M-CTC-T 模型,定义模型架构。使用默认值实例化配置将产生与 M-CTC-T speechbrain/m-ctc-t-large 架构类似的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。有关这些方法的更多信息,请参阅 PretrainedConfig 的文档。
示例
>>> from transformers import MCTCTConfig, MCTCTModel
>>> # Initializing a M-CTC-T mctct-large style configuration
>>> configuration = MCTCTConfig()
>>> # Initializing a model (with random weights) from the mctct-large style configuration
>>> model = MCTCTModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
MCTCTFeatureExtractor
class transformers.MCTCTFeatureExtractor
< 来源 >( 特征大小 = 80 采样率 = 16000 填充值 = 0.0 步长 = 10 窗长 = 25 窗函数 = 'hamming_window' 帧信号缩放 = 32768.0 预加重系数 = 0.97 梅尔底值 = 1.0 归一化均值 = True 归一化方差 = True 返回注意力掩码 = False **kwargs )
参数
- feature_size (
int
, 默认为 80) — 提取特征的特征维度。这是 mel 频率的数量 - sampling_rate (
int
, 默认为 16000) — 音频文件数字化的采样率,以赫兹 (Hz) 表示。 - padding_value (
float
, 默认为 0.0) — 用于填充值的数值。 - hop_length (
int
, 默认为 10) — 窗口间的音频样本数量。在许多论文中也称为“移位”。 - win_length (
int
, 默认为 25) — 每帧的毫秒数 - win_function (
str
, 默认为"hamming_window"
) — 用于加窗的窗函数名称,必须通过torch.{win_function}
访问 - frame_signal_scale (
float
, 默认为 32768.0) — 在应用 DFT 之前创建帧时乘以的常数。 - preemphasis_coeff (
float
, 默认为 0.97) — 在 DFT 之前应用预加重时乘以的常数。 - mel_floor (
float
默认为 1.0) — 梅尔频率底部的最小值。 - normalize_means (
bool
, 可选, 默认为True
) — 是否对提取的特征进行零均值归一化。 - normalize_vars (
bool
, 可选, 默认为True
) — 是否对提取的特征进行单位方差归一化。
构建一个 M-CTC-T 特征提取器。
此特征提取器继承自 SequenceFeatureExtractor,其中包含了大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。此代码已从 Flashlight 的 C++ 代码改编而来。有关实现的更多信息,可以参考此 笔记本,它一步一步地向用户展示了实现过程。
__call__
< 来源 >( raw_speech: typing.Union[numpy.ndarray, list[float], list[numpy.ndarray], list[list[float]]] 填充: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False 最大长度: typing.Optional[int] = None 截断: bool = False 填充到倍数: typing.Optional[int] = None 返回注意力掩码: typing.Optional[bool] = None 返回张量: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None 采样率: typing.Optional[int] = None **kwargs )
参数
- raw_speech (
torch.Tensor
,np.ndarray
,list[float]
,list[torch.Tensor]
,list[np.ndarray]
,list[list[float]]
) — 要填充的序列或序列批次。每个序列可以是张量、Numpy 数组、浮点值列表、张量列表、Numpy 数组列表或浮点值列表的列表。必须是单声道音频,而不是立体声,即每个时间步长一个浮点数。 - padding (
bool
,str
或 PaddingStrategy, 可选, 默认为False
) — 选择一种策略来填充返回的序列(根据模型的填充侧和填充索引),选项包括:True
或'longest'
:填充到批次中最长的序列(如果只提供一个序列,则不填充)。'max_length'
:填充到由参数max_length
指定的最大长度,如果未提供该参数,则填充到模型可接受的最大输入长度。False
或'do_not_pad'
(默认):不填充(即可以输出包含不同长度序列的批次)。
- max_length (
int
, 可选) — 返回列表的最大长度和可选的填充长度(见上文)。 - truncation (
bool
) — 激活截断,将长于 *max_length* 的输入序列截断到 *max_length*。 - pad_to_multiple_of (
int
, 可选) — 如果设置,将序列填充到所提供值的倍数。这对于在计算能力
>= 7.5
(Volta) 的 NVIDIA 硬件或 TPU 上启用 Tensor Cores 特别有用,因为它们受益于序列长度是 128 的倍数。 - return_attention_mask (
bool
, 可选) — 是否返回注意力掩码。如果保留默认值,将根据特定特征提取器的默认值返回注意力掩码。 - return_tensors (
str
或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
- sampling_rate (
int
, 可选) —raw_speech
输入的采样率。强烈建议在转发调用时传入sampling_rate
以防止静默错误。 - padding_value (
float
, 默认为 0.0) —
用于特征化并为模型准备一个或多个序列的主要方法。它返回输入音频的对数梅尔谱图,如同原始 Flashlight MFSC 特征提取代码中实现的那样。
MCTCTProcessor
class transformers.MCTCTProcessor
< source >( feature_extractor tokenizer )
参数
- feature_extractor (
MCTCTFeatureExtractor
) — MCTCTFeatureExtractor 的实例。特征提取器是必需的输入。 - tokenizer (
AutoTokenizer
) — AutoTokenizer 的实例。分词器是必需的输入。
构建一个 MCTCT 处理器,它将 MCTCT 特征提取器和 MCTCT 分词器封装到一个处理器中。
MCTCTProcessor 提供了 MCTCTFeatureExtractor 和 AutoTokenizer 的所有功能。更多信息请参阅 call() 和 decode()。
在正常模式下使用时,此方法将其所有参数转发给 MCTCTFeatureExtractor 的 call() 并返回其输出。如果在 as_target_processor()
上下文中使用,此方法将其所有参数转发给 AutoTokenizer 的 __call__()
。请参阅上述两种方法的文档字符串以获取更多信息。
from_pretrained
< source >( pretrained_model_name_or_path: typing.Union[str, os.PathLike] cache_dir: typing.Union[str, os.PathLike, NoneType] = None force_download: bool = False local_files_only: bool = False token: typing.Union[str, bool, NoneType] = None revision: str = 'main' **kwargs )
参数
- pretrained_model_name_or_path (
str
或os.PathLike
) — 这可以是以下之一:- 一个字符串,托管在 huggingface.co 模型仓库中的预训练 feature_extractor 的 *模型 ID*。
- 包含使用 save_pretrained() 方法保存的特征提取器文件的 *目录* 路径,例如,
./my_model_directory/
。 - 保存的特征提取器 JSON *文件* 的路径或 URL,例如,
./my_model_directory/preprocessor_config.json
。
- **kwargs — 传递给 from_pretrained() 和
~tokenization_utils_base.PreTrainedTokenizer.from_pretrained
的其他关键字参数。
实例化与预训练模型关联的处理器。
此类方法仅调用特征提取器 from_pretrained()、图像处理器 ImageProcessingMixin 和分词器 ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained
方法。请参阅上述方法的文档字符串以获取更多信息。
save_pretrained
< source >( save_directory push_to_hub: bool = False **kwargs )
参数
- save_directory (
str
或os.PathLike
) — 特征提取器 JSON 文件和分词器文件将保存的目录(如果目录不存在,则会创建)。 - push_to_hub (
bool
, 可选, 默认为False
) — 是否在保存模型后将其推送到 Hugging Face 模型中心。您可以使用repo_id
指定要推送到的仓库(默认为您命名空间中save_directory
的名称)。 - kwargs (
dict[str, Any]
, 可选) — 传递给 push_to_hub() 方法的其他关键字参数。
将此处理器(特征提取器、分词器…)的属性保存到指定目录中,以便可以使用 from_pretrained() 方法重新加载。
此类别方法仅调用 save_pretrained() 和 save_pretrained()。请参阅上述方法的文档字符串以获取更多信息。
此方法将其所有参数转发给 AutoTokenizer 的 batch_decode()。有关详细信息,请参阅此方法的文档字符串。
此方法将其所有参数转发给 AutoTokenizer 的 decode()。有关详细信息,请参阅此方法的文档字符串。
MCTCTModel
class transformers.MCTCTModel
< source >( config )
参数
- config (MCTCTConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化并不会加载与模型相关的权重,只加载配置。请查看 from_pretrained() 方法以加载模型权重。
裸 MCTCT 模型 transformer 输出原始隐藏状态,顶部没有任何特定头部。该模型是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参阅 PyTorch 文档以获取所有与一般用法和行为相关的事项。
forward
< source >( input_features: Tensor attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)
参数
- input_features (
torch.LongTensor
, 形状为(batch_size, sequence_length)
) — 词汇表中输入序列 token 的索引。可以使用 Wav2Vec2CTCTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
, 形状为(batch_size, sequence_length)
, 可选) — 避免对填充 token 索引执行注意力操作的掩码。掩码值选择在[0, 1]
之间:- 1 表示 token 未被掩码,
- 0 表示 token 被掩码。
- head_mask (
torch.FloatTensor
, 形状为(num_heads,)
或(num_layers, num_heads)
, 可选) — 遮蔽自注意力模块选定头部的掩码。掩码值选择在[0, 1]
之间:- 1 表示头部未被遮蔽,
- 0 表示头部被遮蔽。
- output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutput 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或 config.return_dict=False
),包含根据配置 (MCTCTConfig) 和输入的不同元素。
-
last_hidden_state (
torch.FloatTensor
, 形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层输出的隐藏状态序列。 -
hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 每个层的输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每个层输出的隐藏状态以及可选的初始嵌入输出。
-
attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或config.output_attentions=True
时返回) —torch.FloatTensor
元组(每个层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
MCTCTModel 的前向方法,覆盖了 __call__
特殊方法。
尽管前向传递的实现需要在该函数中定义,但随后应调用 Module
实例而不是该函数,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoProcessor, MCTCTModel
>>> 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("speechbrain/m-ctc-t-large")
>>> model = MCTCTModel.from_pretrained("speechbrain/m-ctc-t-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]
[1, 195, 1536]
>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids
>>> # compute loss
>>> loss = model(**inputs).loss
MCTCTForCTC
class transformers.MCTCTForCTC
< source >( config )
参数
- config (MCTCTConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化并不会加载与模型相关的权重,只加载配置。请查看 from_pretrained() 方法以加载模型权重。
带 language modeling
头部用于连接主义时间分类(CTC)的 MCTCT 模型。该模型是 PyTorch torch.nn.Module 子类。将其作为常规 PyTorch 模块使用,并参阅 PyTorch 文档以获取所有与一般用法和行为相关的事项。
forward
< source >( input_features: Tensor attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None labels: typing.Optional[torch.LongTensor] = None ) → transformers.modeling_outputs.CausalLMOutput 或 tuple(torch.FloatTensor)
参数
- input_features (
torch.LongTensor
, 形状为({0})
) — 词汇表中输入序列 token 的索引。可以使用 Wav2Vec2CTCTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
, 形状为({0})
, 可选) — 避免对填充 token 索引执行注意力操作的掩码。掩码值选择在[0, 1]
之间:- 1 表示 token 未被掩码,
- 0 表示 token 被掩码。
- head_mask (
torch.FloatTensor
, 形状为(num_heads,)
或(num_layers, num_heads)
, 可选) — 遮蔽自注意力模块选定头部的掩码。掩码值选择在[0, 1]
之间:- 1 表示头部未被遮蔽,
- 0 表示头部被遮蔽。
- output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。 - labels (
torch.LongTensor
, 形状为(batch_size, target_length)
, 可选) — 用于连接主义时间分类的标签。请注意,target_length
必须小于或等于输出 logits 的序列长度。索引选择在[-100, 0, ..., config.vocab_size - 1]
之间。所有设置为-100
的标签都会被忽略(遮蔽),损失仅针对[0, ..., config.vocab_size - 1]
中的标签计算。
返回
transformers.modeling_outputs.CausalLMOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.CausalLMOutput 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或 config.return_dict=False
),包含根据配置 (MCTCTConfig) 和输入的不同元素。
-
loss (
torch.FloatTensor
形状为(1,)
,可选,当提供labels
时返回) — 语言建模损失(用于下一个 token 预测)。 -
logits (形状为
(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
) — 语言建模头部的预测分数(SoftMax 之前的每个词汇标记的分数)。 -
hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 每个层的输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每个层输出的隐藏状态以及可选的初始嵌入输出。
-
attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或config.output_attentions=True
时返回) —torch.FloatTensor
元组(每个层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
MCTCTForCTC 的前向方法,覆盖了 __call__
特殊方法。
尽管前向传递的实现需要在该函数中定义,但随后应调用 Module
实例而不是该函数,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoProcessor, MCTCTForCTC
>>> 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("speechbrain/m-ctc-t-large")
>>> model = MCTCTForCTC.from_pretrained("speechbrain/m-ctc-t-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]
"Mr. Quilter is the apostle of the middle classes, and we're glad to welcome his gospel."
>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids
>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
1885.65