特征提取器
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/main_classes/feature_extractor
特征提取器负责为音频或视觉模型准备输入特征。这包括从序列中提取特征,例如,对音频文件进行预处理以生成 Log-Mel Spectrogram 特征,从图像中提取特征,例如,裁剪图像文件,但也包括填充、归一化和转换为 NumPy、PyTorch 和 TensorFlow 张量。
FeatureExtractionMixin
class transformers.FeatureExtractionMixin
( **kwargs )
这是一个特征提取混合类,用于为序列和图像特征提取器提供保存/加载功能。
from_pretrained
( pretrained_model_name_or_path: Union cache_dir: Union = None force_download: bool = False local_files_only: bool = False token: Union = None revision: str = 'main' **kwargs )
参数
pretrained_model_name_or_path
(str
或os.PathLike
) — 这可以是:
- 一个字符串,预训练特征提取器的 模型 id,托管在 huggingface.co 上的模型存储库中。有效的模型 id 可以位于根级别,如
bert-base-uncased
,或者在用户或组织名称下进行命名空间,如dbmdz/bert-base-german-cased
。 - 一个指向包含使用 save_pretrained() 方法保存的特征提取器文件的 目录 的路径,例如
./my_model_directory/
。 - 一个保存的特征提取器 JSON 文件 的路径或 URL,例如
./my_model_directory/preprocessor_config.json
。
cache_dir
(str
或os.PathLike
, 可选) — 下载的预训练模型特征提取器应该缓存在其中的目录路径,如果不使用标准缓存。force_download
(bool
, 可选, 默认为False
) — 是否强制(重新)下载特征提取器文件并覆盖缓存版本(如果存在)。resume_download
(bool
, 可选, 默认为False
) — 是否删除接收不完整的文件。如果存在这样的文件,则尝试恢复下载。proxies
(Dict[str, str]
, 可选) — 一个按协议或端点使用的代理服务器字典,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理将在每个请求中使用。token
(str
或bool
, 可选) — 用作远程文件的 HTTP bearer 授权的令牌。如果为True
,或未指定,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。revision
(str
, 可选, 默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 id,因为我们在 huggingface.co 上使用基于 git 的系统来存储模型和其他工件,所以revision
可以是 git 允许的任何标识符。
从特征提取器实例化一种类型的 FeatureExtractionMixin,例如 SequenceFeatureExtractor 的派生类。
示例:
# We can't instantiate directly the base class *FeatureExtractionMixin* nor *SequenceFeatureExtractor* so let's show the examples on a # derived class: *Wav2Vec2FeatureExtractor* feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained( "facebook/wav2vec2-base-960h" ) # Download feature_extraction_config from huggingface.co and cache. feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained( "./test/saved_model/" ) # E.g. feature_extractor (or model) was saved using *save_pretrained('./test/saved_model/')* feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained("./test/saved_model/preprocessor_config.json") feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained( "facebook/wav2vec2-base-960h", return_attention_mask=False, foo=False ) assert feature_extractor.return_attention_mask is False feature_extractor, unused_kwargs = Wav2Vec2FeatureExtractor.from_pretrained( "facebook/wav2vec2-base-960h", return_attention_mask=False, foo=False, return_unused_kwargs=True ) assert feature_extractor.return_attention_mask is False assert unused_kwargs == {"foo": False}
save_pretrained
( save_directory: Union 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() 方法的额外关键字参数。
将 feature_extractor 对象保存到目录 save_directory
,以便可以使用 from_pretrained() 类方法重新加载。
SequenceFeatureExtractor
class transformers.SequenceFeatureExtractor
( feature_size: int sampling_rate: int padding_value: float **kwargs )
参数
feature_size
(int
) — 提取特征的特征维度。sampling_rate
(int
) — 应以赫兹(Hz)表示的音频文件数字化的采样率。padding_value
(float
) — 用于填充填充值/向量的值。
这是一个用于语音识别的通用特征提取类。
pad
( processed_features: Union padding: Union = True max_length: Optional = None truncation: bool = False pad_to_multiple_of: Optional = None return_attention_mask: Optional = None return_tensors: Union = None )
参数
processed_features
(BatchFeature、BatchFeature 列表、Dict[str, List[float]]
、Dict[str, List[List[float]]
或List[Dict[str, List[float]]
) — 处理后的输入。可以表示一个输入(BatchFeature 或Dict[str, List[float]]
)或一批输入值/向量(BatchFeature 列表、Dict[str, List[List[float]]] 或 List[Dict[str, List[float]]),因此您可以在预处理期间以及在 PyTorch Dataloader 收集函数中使用此方法。
您可以使用张量(numpy 数组、PyTorch 张量或 TensorFlow 张量)代替List[float]
,请参阅上面的返回类型说明。padding
(bool
、str
或 PaddingStrategy, 可选, 默认为True
) — 选择一种策略来填充返回的序列(根据模型的填充方向和填充索引):
True
或'longest'
: 填充到批次中最长的序列(如果只提供单个序列,则不填充)。'max_length'
: 填充到指定的最大长度参数max_length
或模型的最大可接受输入长度(如果未提供该参数)。False
或'do_not_pad'
(默认): 无填充(即,可以输出具有不同长度序列的批次)。
max_length
(int
, 可选) — 返回列表的最大长度和可选填充长度(见上文)。截断
(bool
) — 激活截断以将输入序列长度超过max_length
的部分截断为max_length
。pad_to_multiple_of
(int
, 可选) — 如果设置,将序列填充到提供的值的倍数。
这对于在具有计算能力>= 7.5
(Volta)的 NVIDIA 硬件上启用 Tensor Cores,或者在受益于序列长度为 128 的 TPUs 上使用特别有用。return_attention_mask
(bool
, 可选) — 是否返回注意力掩码。如果保持默认值,将根据特定 feature_extractor 的默认值返回注意力掩码。
什么是注意力掩码?return_tensors
(str
或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
'tf'
: 返回 TensorFlowtf.constant
对象。'pt'
: 返回 PyTorchtorch.Tensor
对象。'np'
: 返回 Numpynp.ndarray
对象。
填充输入值/输入向量或一批输入值/输入向量到预定义长度或批次中的最大序列长度。
填充侧(左/右)填充值在特征提取器级别定义(使用self.padding_side
,self.padding_value
)
如果传递的processed_features
是 numpy 数组、PyTorch 张量或 TensorFlow 张量的字典,则结果将使用相同类型,除非您使用return_tensors
提供不同的张量类型。在 PyTorch 张量的情况下,您将丢失张量的特定设备。
BatchFeature
class transformers.BatchFeature
( data: Optional = None tensor_type: Union = None )
参数
data
(dict
,可选)-由call/pad 方法返回的列表/数组/张量的字典(‘input_values’,'attention_mask’等)。tensor_type
(Union[None, str, TensorType]
,可选)-您可以在此处提供一个 tensor_type,以在初始化时将整数列表转换为 PyTorch/TensorFlow/Numpy 张量。
保存 pad()和特征提取器特定的__call__
方法的输出。
此类派生自 Python 字典,可用作字典。
convert_to_tensors
( tensor_type: Union = None )
参数
tensor_type
(str
或 TensorType,可选)-要使用的张量类型。如果是str
,应该是枚举 TensorType 值之一。如果是None
,则不进行修改。
将内部内容转换为张量。
to
( *args **kwargs ) → export const metadata = 'undefined';BatchFeature
参数
args
(Tuple
)-将传递给张量的to(...)
函数。kwargs
(Dict
,可选)-将传递给张量的to(...)
函数。
返回
BatchFeature
修改后的相同实例。
通过调用v.to(*args, **kwargs)
将所有值发送到设备(仅适用于 PyTorch)。这应该支持在不同的dtypes
中进行转换,并将BatchFeature
发送到不同的device
。
ImageFeatureExtractionMixin
class transformers.ImageFeatureExtractionMixin
( )
包含准备图像特征的实用程序的 Mixin。
center_crop
( image size ) → export const metadata = 'undefined';new_image
参数
image
(PIL.Image.Image
或np.ndarray
或torch.Tensor
,形状为(n_channels,height,width)或(height,width,n_channels))-要调整大小的图像。size
(int
或Tuple[int, int]
)-要裁剪图像的大小。
返回
new_image
中心裁剪的PIL.Image.Image
或np.ndarray
或torch.Tensor
的形状:(n_channels,height,width)。
使用中心裁剪将image
裁剪到给定大小。请注意,如果图像太小而无法裁剪到给定大小,则将进行填充(因此返回的结果具有所需的大小)。
convert_rgb
( image )
参数
image
(PIL.Image.Image
)-要转换的图像。
将PIL.Image.Image
转换为 RGB 格式。
expand_dims
( image )
参数
image
(PIL.Image.Image
或np.ndarray
或torch.Tensor
)-要扩展的图像。
将二维image
扩展为三维。
flip_channel_order
( image )
参数
image
(PIL.Image.Image
或np.ndarray
或torch.Tensor
)- 要翻转颜色通道的图像。如果是np.ndarray
或torch.Tensor
,通道维度应该在前面。
将image
的通道顺序从 RGB 翻转为 BGR,或反之。请注意,如果image
是 PIL 图像,则这将触发将其转换为 NumPy 数组。
normalize
( image mean std rescale = False )
参数
image
(PIL.Image.Image
或np.ndarray
或torch.Tensor
)- 要归一化的图像。mean
(List[float]
或np.ndarray
或torch.Tensor
)- 用于归一化的均值(每个通道)。std
(List[float]
或np.ndarray
或torch.Tensor
)- 用于归一化的标准差(每个通道)。rescale
(bool
,可选,默认为False
)- 是否将图像重新缩放为 0 到 1 之间。如果提供了 PIL 图像,缩放将自动发生。
使用mean
和std
对image
进行归一化。请注意,如果image
是 PIL 图像,则这将触发将其转换为 NumPy 数组。
rescale
( image: ndarray scale: Union )
按比例缩放 numpy 图像
resize
( image size resample = None default_to_square = True max_size = None ) → export const metadata = 'undefined';image
参数
image
(PIL.Image.Image
或np.ndarray
或torch.Tensor
)- 要调整大小的图像。size
(int
或Tuple[int, int]
)- 用于调整图像大小的大小。如果size
是一个类似(h,w)的序列,输出大小将与此匹配。
如果size
是一个整数且default_to_square
为True
,则图像将被调整为(size,size)。如果size
是一个整数且default_to_square
为False
,则图像的较小边将与此数字匹配。即,如果高度>宽度,则图像将被调整为(size * height / width,size)。resample
(int
,可选,默认为PILImageResampling.BILINEAR
)- 用于重采样的滤波器。default_to_square
(bool
,可选,默认为True
)- 当size
是单个整数时如何转换size
。如果设置为True
,size
将被转换为正方形(size
,size
)。如果设置为False
,将复制torchvision.transforms.Resize
,支持仅调整最小边并提供可选的max_size
。max_size
(int
,可选,默认为None
)- 调整大小后图像较长边的最大允许值:如果图像的较长边大于max_size
,则根据size
再次调整图像,使较长边等于max_size
。因此,size
可能会被覆盖,即较小的边可能会比size
短。仅在default_to_square
为False
时使用。
返回
图像
一个调整大小的PIL.Image.Image
。
调整image
的大小。强制将输入转换为 PIL.Image。
rotate
( image angle resample = None expand = 0 center = None translate = None fillcolor = None ) → export const metadata = 'undefined';image
参数
image
(PIL.Image.Image
或np.ndarray
或torch.Tensor
)- 要旋转的图像。如果是np.ndarray
或torch.Tensor
,将在旋转之前转换为PIL.Image.Image
。
返回
图像
一个旋转后的PIL.Image.Image
。
返回旋转后的image
的副本。此方法返回image
的副本,将其围绕中心逆时针旋转给定角度。
to_numpy_array
( image rescale = None channel_first = True )
参数
image
(PIL.Image.Image
或np.ndarray
或torch.Tensor
)- 要转换为 NumPy 数组的图像。rescale
(bool
, optional) — 是否应用缩放因子(使像素值为 0 到 1 之间的浮点数)。如果图像是 PIL 图像或整数数组/张量,则默认为True
,否则为False
。channel_first
(bool
, optional,默认为True
) — 是否重新排列图像的维度以将通道维度放在第一维。
将image
转换为 numpy 数组。可选择重新缩放并将通道维度作为第一维。
to_pil_image
( image rescale = None )
参数
image
(PIL.Image.Image
或numpy.ndarray
或torch.Tensor
) — 要转换为 PIL 图像格式的图像。rescale
(bool
, optional) — 是否应用缩放因子(使像素值为 0 到 255 之间的整数)。如果图像类型为浮点类型,则默认为True
,否则为False
。
将image
转换为 PIL 图像。可选择重新缩放并在需要时将通道维度放回最后一个轴。
图像处理器
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/main_classes/image_processor
图像处理器负责为视觉模型准备输入特征并后处理它们的输出。这包括诸如调整大小、归一化和转换为 PyTorch、TensorFlow、Flax 和 Numpy 张量等转换。它还可能包括模型特定的后处理,如将对数转换为分割掩模。
ImageProcessingMixin
class transformers.ImageProcessingMixin
( **kwargs )
这是一个用于为顺序和图像特征提取器提供保存/加载功能的图像处理器 mixin。
from_pretrained
( pretrained_model_name_or_path: Union cache_dir: Union = None force_download: bool = False local_files_only: bool = False token: Union = None revision: str = 'main' **kwargs )
参数
pretrained_model_name_or_path
(str
或os.PathLike
) — 这可以是:
- 一个字符串,预训练的图像处理器的模型 ID,托管在 huggingface.co 上的模型存储库中。有效的模型 ID 可以位于根级别,如
bert-base-uncased
,或者在用户或组织名称下命名空间化,如dbmdz/bert-base-german-cased
。 - 一个目录的路径,其中包含使用 save_pretrained()方法保存的图像处理器文件,例如,
./my_model_directory/
。 - 一个保存的图像处理器 JSON 文件的路径或 URL,例如,
./my_model_directory/preprocessor_config.json
。
cache_dir
(str
或os.PathLike
, 可选) — 预下载的预训练模型图像处理器应该缓存在其中的目录路径,如果不使用标准缓存。force_download
(bool
, 可选, 默认为False
) — 是否强制(重新)下载图像处理器文件并覆盖缓存版本(如果存在)。resume_download
(bool
, 可选, 默认为False
) — 是否删除接收不完整的文件。如果存在这样的文件,尝试恢复下载。proxies
(Dict[str, str]
, 可选) — 一个代理服务器字典,按协议或端点使用,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。这些代理在每个请求中使用。token
(str
或bool
, 可选) — 用作远程文件的 HTTP bearer 授权的令牌。如果为True
或未指定,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。revision
(str
, 可选, 默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,因为我们使用基于 git 的系统在 huggingface.co 上存储模型和其他工件,所以revision
可以是 git 允许的任何标识符。
从图像处理器实例化一个类型的 ImageProcessingMixin。
示例:
# We can't instantiate directly the base class *ImageProcessingMixin* so let's show the examples on a # derived class: *CLIPImageProcessor* image_processor = CLIPImageProcessor.from_pretrained( "openai/clip-vit-base-patch32" ) # Download image_processing_config from huggingface.co and cache. image_processor = CLIPImageProcessor.from_pretrained( "./test/saved_model/" ) # E.g. image processor (or model) was saved using *save_pretrained('./test/saved_model/')* image_processor = CLIPImageProcessor.from_pretrained("./test/saved_model/preprocessor_config.json") image_processor = CLIPImageProcessor.from_pretrained( "openai/clip-vit-base-patch32", do_normalize=False, foo=False ) assert image_processor.do_normalize is False image_processor, unused_kwargs = CLIPImageProcessor.from_pretrained( "openai/clip-vit-base-patch32", do_normalize=False, foo=False, return_unused_kwargs=True ) assert image_processor.do_normalize is False assert unused_kwargs == {"foo": False}
save_pretrained
( save_directory: Union 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()方法的额外关键字参数。
将图像处理器对象保存到目录save_directory
,以便可以使用 from_pretrained()类方法重新加载。
BatchFeature
class transformers.BatchFeature
( data: Optional = None tensor_type: Union = None )
参数
data
(dict
,可选)- 由call/pad 方法返回的列表/数组/张量的字典(‘input_values’,'attention_mask’等)。tensor_type
(Union[None, str, TensorType]
,可选)- 您可以在此处给出一个 tensor_type,以在初始化时将整数列表转换为 PyTorch/TensorFlow/Numpy 张量。
保存 pad()和特定特征提取器__call__
方法的输出。
这个类是从一个 Python 字典派生而来的,可以作为一个字典使用。
convert_to_tensors
( tensor_type: Union = None )
参数
tensor_type
(str
或 TensorType,可选)- 要使用的张量类型。如果是str
,应该是枚举 TensorType 的值之一。如果是None
,则不进行修改。
将内部内容转换为张量。
to
( *args **kwargs ) → export const metadata = 'undefined';BatchFeature
参数
args
(Tuple
)- 将传递给张量的to(...)
函数。kwargs
(Dict
,可选)- 将传递给张量的to(...)
函数。
返回
BatchFeature
修改后的相同实例。
通过调用v.to(*args, **kwargs)
将所有值发送到设备(仅适用于 PyTorch)。这应该支持在不同的dtypes
中进行转换,并将BatchFeature
发送到不同的device
。
BaseImageProcessor
class transformers.image_processing_utils.BaseImageProcessor
( **kwargs )
center_crop
( image: ndarray size: Dict data_format: Union = None input_data_format: Union = None **kwargs )
参数
image
(np.ndarray
)- 要居中裁剪的图像。size
(Dict[str, int]
)- 输出图像的大小。data_format
(str
或ChannelDimension
,可选)- 输出图像的通道维度格式。如果未设置,则使用输入图像的通道维度格式。可以是以下之一:
"channels_first"
或ChannelDimension.FIRST
:图像以(num_channels, height, width)格式。"channels_last"
或ChannelDimension.LAST
:图像以(height, width, num_channels)格式。
input_data_format
(ChannelDimension
或str
,可选)- 输入图像的通道维度格式。如果未设置,则从输入图像推断通道维度格式。可以是以下之一:
"channels_first"
或ChannelDimension.FIRST
:图像以(num_channels, height, width)格式。"channels_last"
或ChannelDimension.LAST
:图像以(height, width, num_channels)格式。
将图像居中裁剪到(size["height"], size["width"])
。如果输入尺寸沿任何边小于crop_size
,则图像将填充为 0,然后居中裁剪。
normalize
( image: ndarray mean: Union std: Union data_format: Union = None input_data_format: Union = None **kwargs ) → export const metadata = 'undefined';np.ndarray
参数
image
(np.ndarray
)- 要归一化的图像。mean
(float
或Iterable[float]
)- 用于归一化的图像均值。std
(float
或Iterable[float]
)- 用于归一化的图像标准差。data_format
(str
或ChannelDimension
,可选) — 输出图像的通道维度格式。如果未设置,则使用输入图像的通道维度格式。可以是以下之一:
"channels_first"
或ChannelDimension.FIRST
:图像以 (通道数, 高度, 宽度) 格式。"channels_last"
或ChannelDimension.LAST
:图像以 (高度, 宽度, 通道数) 格式。
input_data_format
(ChannelDimension
或str
,可选) — 输入图像的通道维度格式。如果未设置,则从输入图像中推断通道维度格式。可以是以下之一:
"channels_first"
或ChannelDimension.FIRST
:图像以 (通道数, 高度, 宽度) 格式。"channels_last"
或ChannelDimension.LAST
:图像以 (高度, 宽度, 通道数) 格式。
返回值
np.ndarray
归一化后的图像。
归一化图像。图像 = (图像 - 图像均值) / 图像标准差。
重新缩放
( image: ndarray scale: float data_format: Union = None input_data_format: Union = None **kwargs ) → export const metadata = 'undefined';np.ndarray
参数
image
(np.ndarray
) — 要重新缩放的图像。scale
(float
) — 用于重新缩放像素值的缩放因子。data_format
(str
或ChannelDimension
,可选) — 输出图像的通道维度格式。如果未设置,则使用输入图像的通道维度格式。可以是以下之一:
"channels_first"
或ChannelDimension.FIRST
:图像以 (通道数, 高度, 宽度) 格式。"channels_last"
或ChannelDimension.LAST
:图像以 (高度, 宽度, 通道数) 格式。
input_data_format
(ChannelDimension
或str
,可选) — 输入图像的通道维度格式。如果未设置,则从输入图像中推断通道维度格式。可以是以下之一:
"channels_first"
或ChannelDimension.FIRST
:图像以 (通道数, 高度, 宽度) 格式。"channels_last"
或ChannelDimension.LAST
:图像以 (高度, 宽度, 通道数) 格式。
返回值
np.ndarray
重新缩放后的图像。
通过缩放因子重新缩放图像。图像 = 图像 * 缩放因子。
模型
文本模型
ALBERT
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/albert
概述
ALBERT 模型是由 Zhenzhong Lan、Mingda Chen、Sebastian Goodman、Kevin Gimpel、Piyush Sharma、Radu Soricut 在ALBERT: A Lite BERT for Self-supervised Learning of Language Representations中提出的。它提出了两种减少内存消耗并增加 BERT 训练速度的参数减少技术:
- 将嵌入矩阵分成两个较小的矩阵。
- 使用在组之间分割的重复层。
论文的摘要如下:
在预训练自然语言表示时增加模型大小通常会导致在下游任务上表现提高。然而,在某个时候,由于 GPU/TPU 内存限制、更长的训练时间和意外的模型退化,进一步增加模型变得更加困难。为了解决这些问题,我们提出了两种参数减少技术,以降低内存消耗并增加 BERT 的训练速度。全面的实证证据表明,我们提出的方法导致模型比原始 BERT 更好地扩展。我们还使用了一个自监督损失,重点放在建模句子间的一致性上,并且展示它在具有多句输入的下游任务中始终有所帮助。因此,我们的最佳模型在 GLUE、RACE 和 SQuAD 基准测试中建立了新的最先进结果,同时与 BERT-large 相比具有更少的参数。
此模型由lysandre贡献。此模型 jax 版本由kamalkraj贡献。原始代码可以在这里找到。
使用提示
- ALBERT 是一个具有绝对位置嵌入的模型,因此通常建议在右侧而不是左侧填充输入。
- ALBERT 使用重复层,导致内存占用较小,但计算成本与具有相同数量隐藏层的 BERT-like 架构相似,因为它必须遍历相同数量的(重复)层。
- 嵌入大小 E 与隐藏大小 H 不同的原因是,嵌入是上下文无关的(一个嵌入向量表示一个标记),而隐藏状态是上下文相关的(一个隐藏状态表示一个标记序列),因此 H >> E 更合乎逻辑。此外,嵌入矩阵很大,因为它是 V x E(V 是词汇量)。如果 E < H,则参数较少。
- 层被分成共享参数的组(以节省内存)。下一个句子预测被句子排序预测所取代:在输入中,我们有两个连续的句子 A 和 B,我们要么输入 A 后跟 B,要么输入 B 后跟 A。模型必须预测它们是否被交换了。
此模型由lysandre贡献。此模型 jax 版本由kamalkraj贡献。原始代码可以在这里找到。
资源
以下部分提供的资源包括官方 Hugging Face 和社区(由🌎表示)资源列表,以帮助您开始使用 AlBERT。如果您有兴趣提交资源以包含在此处,请随时打开一个 Pull Request,我们将对其进行审查!资源应该理想地展示一些新东西,而不是重复现有资源。
文本分类
- AlbertForSequenceClassification 这个示例脚本 支持。
- TFAlbertForSequenceClassification 这个示例脚本支持。
- FlaxAlbertForSequenceClassification 这个示例脚本 和 笔记本 支持。
- 查看 Text classification task guide 如何使用模型。
标记分类
- AlbertForTokenClassification 这个示例脚本支持。
- TFAlbertForTokenClassification 这个示例脚本 和 笔记本 支持。
- FlaxAlbertForTokenClassification 这个示例脚本支持。
- Token classification 🤗 Hugging Face 课程的章节。
- 查看 Token classification task guide 如何使用模型。
填充-掩码
- AlbertForMaskedLM 这个示例脚本 和 笔记本 支持。
- TFAlbertForMaskedLM 这个示例脚本 和 笔记本 支持。
- FlaxAlbertForMaskedLM 这个示例脚本 和 笔记本 支持。
- 掩码语言建模 🤗 Hugging Face 课程的章节。
- 查看 Masked language modeling task guide 如何使用模型。
问答
- AlbertForQuestionAnswering 这个示例脚本 和 笔记本 支持。
- TFAlbertForQuestionAnswering 可通过这个示例脚本和笔记本支持。
- FlaxAlbertForQuestionAnswering 可通过这个示例脚本支持。
- 问答章节来自🤗 Hugging Face 课程。
- 查看问答任务指南以了解如何使用模型。
多项选择
- AlbertForMultipleChoice 可通过这个示例脚本和笔记本支持。
- TFAlbertForMultipleChoice 可通过这个示例脚本和笔记本支持。
- 查看多项选择任务指南以了解如何使用模型。
AlbertConfig
class transformers.AlbertConfig
参数
vocab_size
(int
, 可选, 默认为 30000) — ALBERT 模型的词汇表大小。定义了在调用 AlbertModel 或 TFAlbertModel 时可以表示的不同标记数量。embedding_size
(int
, 可选, 默认为 128) — 词汇嵌入的维度。hidden_size
(int
, 可选, 默认为 4096) — 编码器层和池化器层的维度。num_hidden_layers
(int
, 可选, 默认为 12) — Transformer 编码器中的隐藏层数。num_hidden_groups
(int
, 可选, 默认为 1) — 隐藏层的组数,同一组中的参数是共享的。num_attention_heads
(int
, 可选, 默认为 64) — Transformer 编码器中每个注意力层的注意力头数。intermediate_size
(int
, 可选, 默认为 16384) — Transformer 编码器中“中间”(通常称为前馈)层的维度。inner_group_num
(int
, 可选, 默认为 1) — 注意力和前馈的内部重复次数。hidden_act
(str
或Callable
, 可选, 默认为"gelu_new"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"silu"
和"gelu_new"
。hidden_dropout_prob
(float
, 可选, 默认为 0) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。attention_probs_dropout_prob
(float
, 可选, 默认为 0) — 注意力概率的 dropout 比率。max_position_embeddings
(int
, 可选, 默认为 512) — 该模型可能使用的最大序列长度。通常将其设置为较大的值(例如,512、1024 或 2048)。type_vocab_size
(int
, optional, defaults to 2) — 在调用 AlbertModel 或 TFAlbertModel 时传递的token_type_ids
的词汇表大小。initializer_range
(float
, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。layer_norm_eps
(float
, optional, defaults to 1e-12) — 层归一化层使用的 epsilon。classifier_dropout_prob
(float
, optional, defaults to 0.1) — 附加分类器的丢弃比率。position_embedding_type
(str
, optional, defaults to"absolute"
) — 位置嵌入的类型。选择"absolute"
、"relative_key"
、"relative_key_query"
中的一个。对于位置嵌入,请使用"absolute"
。有关"relative_key"
的更多信息,请参阅Self-Attention with Relative Position Representations (Shaw et al.)。有关"relative_key_query"
的更多信息,请参阅Improve Transformer Models with Better Relative Position Embeddings (Huang et al.)中的Method 4。pad_token_id
(int
, optional, defaults to 0) — 填充标记的 id。bos_token_id
(int
, optional, defaults to 2) — 流开始标记的 id。eos_token_id
(int
, optional, defaults to 3) — 流结束标记的 id。
这是用于存储 AlbertModel 或 TFAlbertModel 配置的配置类。根据指定的参数实例化 ALBERT 模型,定义模型架构。使用默认值实例化配置将产生类似于 ALBERT albert-xxlarge-v2架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import AlbertConfig, AlbertModel >>> # Initializing an ALBERT-xxlarge style configuration >>> albert_xxlarge_configuration = AlbertConfig() >>> # Initializing an ALBERT-base style configuration >>> albert_base_configuration = AlbertConfig( ... hidden_size=768, ... num_attention_heads=12, ... intermediate_size=3072, ... ) >>> # Initializing a model (with random weights) from the ALBERT-base style configuration >>> model = AlbertModel(albert_xxlarge_configuration) >>> # Accessing the model configuration >>> configuration = model.config
AlbertTokenizer
class transformers.AlbertTokenizer
( vocab_file do_lower_case = True remove_space = True keep_accents = False bos_token = '[CLS]' eos_token = '[SEP]' unk_token = '<unk>' sep_token = '[SEP]' pad_token = '<pad>' cls_token = '[CLS]' mask_token = '[MASK]' sp_model_kwargs: Optional = None **kwargs )
参数
vocab_file
(str
) — 包含实例化分词器所需词汇的SentencePiece文件(通常具有*.spm*扩展名)。do_lower_case
(bool
, optional, defaults toTrue
) — 在分词时是否将输入转换为小写。remove_space
(bool
, optional, defaults toTrue
) — 在分词时是否去除文本(删除字符串前后的多余空格)。keep_accents
(bool
, optional, defaults toFalse
) — 在分词时是否保留重音。bos_token
(str
, optional, defaults to"[CLS]"
) — 用于预训练期间的序列开始标记。可以用作序列分类器标记。
在使用特殊标记构建序列时,这不是用于序列开始的标记。实际使用的是cls_token
。eos_token
(str
, optional, defaults to"[SEP]"
) — 序列结束标记。
在使用特殊标记构建序列时,这不是用于序列结束的标记。实际使用的是sep_token
。unk_token
(str
, optional, defaults to""
) — 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。sep_token
(str
,可选,默认为"[SEP]"
)— 分隔符标记,在从多个序列构建序列时使用,例如,用于序列分类的两个序列或用于文本和问题的问题回答。它也被用作使用特殊标记构建的序列的最后一个标记。pad_token
(str
,可选,默认为""
)— 用于填充的标记,例如在批处理不同长度的序列时使用。cls_token
(str
,可选,默认为"[CLS]"
)— 在进行序列分类(整个序列的分类而不是每个标记的分类)时使用的分类器标记。当使用特殊标记构建序列时,它是序列的第一个标记。mask_token
(str
,可选,默认为"[MASK]"
)— 用于屏蔽值的标记。这是在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。sp_model_kwargs
(dict
,可选)— 将传递给SentencePieceProcessor.__init__()
方法。SentencePiece 的 Python 包装器可用于设置:
enable_sampling
:启用子词正则化。nbest_size
:unigram 的抽样参数。对于 BPE-Dropout 无效。
nbest_size = {0,1}
:不执行抽样。nbest_size > 1
:从 nbest_size 结果中进行抽样。nbest_size < 0
:假设 nbest_size 为无限,并使用前向过滤和后向抽样算法从所有假设(格)中进行抽样。
alpha
:unigram 抽样的平滑参数,以及 BPE-dropout 的合并操作的丢失概率。
sp_model
(SentencePieceProcessor
)— 用于每次转换(字符串、标记和 ID)的SentencePiece处理器。
构建一个 ALBERT 分词器。基于SentencePiece。
此分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
build_inputs_with_special_tokens
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
)— 将添加特殊标记的 ID 列表。token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。
返回
List[int]
具有适当特殊标记的 input IDs 列表。
通过连接和添加特殊标记从序列或序列对构建用于序列分类任务的模型输入。一个 ALBERT 序列具有以下格式:
- 单个序列:
[CLS] X [SEP]
- 一对序列:
[CLS] A [SEP] B [SEP]
get_special_tokens_mask
( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
)— ID 列表。token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。already_has_special_tokens
(bool
,可选,默认为False
)— 标记列表是否已经使用特殊标记格式化为模型。
返回
List[int]
一个整数列表,范围为[0, 1]:1 表示特殊标记,0 表示序列标记。
从没有添加特殊标记的标记列表中检索序列 ID。在使用分词器prepare_for_model
方法添加特殊标记时调用此方法。
create_token_type_ids_from_sequences
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
)— ID 列表。token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。
返回
List[int]
根据给定序列的 token type IDs 列表。
从传递的两个序列创建一个用于序列对分类任务的掩码。一个 ALBERT
序列对掩码的格式如下:
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 | first sequence | second sequence |
如果 token_ids_1
为 None
,此方法仅返回掩码的第一部分(0s)。
save_vocabulary
( save_directory: str filename_prefix: Optional = None )
Transformers 4.37 中文文档(二十)(2)https://developer.aliyun.com/article/1563296