Diffusers documentation
Transformer2DModel
Transformer2DModel
Модель Transformer для изображений от CompVis, основанная на Vision Transformer, предложенном Dosovitskiy et al. Transformer2DModel принимает дискретные (классы векторных эмбеддингов) или непрерывные (собственно эмбеддинги) входные данные.
Когда вход является непрерывным:
- Проекция входных данных и изменение их формы до
(batch_size, sequence_length, feature_dimension). - Примените блоки Transformer стандартным способом.
- Изменение формы в изображение.
Когда вход является дискретным:
Предполагается, что один из входных классов представляет собой замаскированный латентный пиксель. Предсказанные классы для изображения без шума не содержат предсказания для замаскированного пикселя, поскольку изображение без шума не может быть замаскировано.
- Преобразовать вход (классы латентных пикселей) в эмбеддинги и применить позиционные эмбеддинги.
- Примените блоки Transformer стандартным способом.
- Предсказать классы изображения без шума.
Transformer2DModel
класс diffusers.Transformer2DModel
< source >( num_attention_heads: int = 16attention_head_dim: int = 88in_channels: int | None = Noneout_channels: int | None = Nonenum_layers: int = 1dropout: float = 0.0norm_num_groups: int = 32cross_attention_dim: int | None = Noneattention_bias: bool = Falsesample_size: int | None = Nonenum_vector_embeds: int | None = Nonepatch_size: int | None = Noneactivation_fn: str = 'geglu'num_embeds_ada_norm: int | None = Noneuse_linear_projection: bool = Falseonly_cross_attention: bool = Falsedouble_self_attention: bool = Falseupcast_attention: bool = Falsenorm_type: str = 'layer_norm'norm_elementwise_affine: bool = Truenorm_eps: float = 1e-05attention_type: str = 'default'caption_channels: int = Noneinterpolation_scale: float = Noneuse_additional_conditions: bool | None = None )
Параметры
- num_attention_heads (
int, необязательный, по умолчанию 16) — количество голов, используемых для многоголовного внимания. - attention_head_dim (
int, необязательный, по умолчанию 88) — количество каналов в каждой голове. - in_channels (
int, необязательный) — Количество каналов на входе и выходе (укажите, если вход непрерывный). - num_layers (
int, необязательный, по умолчанию 1) — Количество блоков Transformer, которые следует использовать. - dropout (
float, необязательный, по умолчанию 0.0) — Вероятность dropout, которую следует использовать. - cross_attention_dim (
int, необязательный) — Количество измеренийencoder_hidden_states, которые следует использовать. - sample_size (
int, необязательный) — ширина латентных изображений (указывается, если вход дискретный). Это значение фиксировано во время обучения, поскольку используется для обучения набора позиционных эмбеддингов. - num_vector_embeds (
int, необязательный) — Количество классов векторных эмбеддингов латентных пикселей (указывается, если вход дискретный). Включает класс для замаскированного латентного пикселя. - activation_fn (
str, необязательный, по умолчанию"geglu") — Функция активации, используемая в полносвязном слое. - num_embeds_ada_norm (
int, необязательный) — Количество шагов диффузии, использованных во время обучения. Укажите, если хотя бы один из norm_layers являетсяAdaLayerNorm. Это значение фиксируется во время обучения, поскольку оно используется для обучения набора эмбеддингов, которые добавляются к скрытым состояниям.Во время инференса вы можете выполнять денойзинг не более чем за
num_embeds_ada_normшагов. - attention_bias (
bool, необязательный) — Определяет, должен ли механизм внимания вTransformerBlocksвключать параметр смещения (bias).
Двумерная модель Transformer для данных, похожих на изображения.
forward
< source >( hidden_states: Tensorencoder_hidden_states: typing.Optional[torch.Tensor] = Nonetimestep: typing.Optional[torch.LongTensor] = Noneadded_cond_kwargs: dict[str, torch.Tensor] = Noneclass_labels: typing.Optional[torch.LongTensor] = Nonecross_attention_kwargs: dict[str, typing.Any] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True )
Параметры
- hidden_states (
torch.LongTensorформы(batch size, num latent pixels)для дискретных,torch.Tensorформы(batch size, channel, height, width)для непрерывных) — Входныеhidden_states. - encoder_hidden_states (
torch.Tensorформы(batch size, sequence len, embed dims), необязательный) — Условные эмбеддинги для слоя кросс-внимания. Если не заданы, кросс-внимание по умолчанию заменяется на само-внимание. - timestep (
torch.LongTensor, необязательный) — Используется для указания шага денойзинга. Необязательный timestep, применяемый как эмбеддинг вAdaLayerNorm. - class_labels (
torch.LongTensorформы(batch size, num classes), необязательный) — Используется для указания условий по меткам классов. Необязательные метки классов, применяемые как эмбеддинг вAdaLayerZeroNorm. - cross_attention_kwargs (
dict[str, Any], необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor, определенный вself.processorв diffusers.models.attention_processor. - attention_mask (
torch.Tensor, необязательный) — Маска внимания формы(batch, key_tokens)применяется кencoder_hidden_states. Если значение равно1, маска сохраняется, иначе, если равно0, — отбрасывается. Маска преобразуется в смещение (bias), которое добавляет большие отрицательные значения к оценкам внимания, соответствующим токенам, подлежащим отбрасыванию. - encoder_attention_mask (
torch.Tensor, необязательный) — Маска кросс-внимания, применяемая кencoder_hidden_states. Поддерживаются два формата:- Маска
(batch, sequence_length)True = сохранить, False = отбросить. - Смещение
(batch, 1, sequence_length)0 = сохранить, -10000 = отбросить.
Если
ndim == 2: значение будет интерпретировано как маска, а затем преобразовано в смещение, соответствующее формату, описанному выше. Это смещение будет добавлено к оценкам кросс-внимания. - Маска
- return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать UNet2DConditionOutput вместо обычного кортежа.
Метод forward модели Transformer2DModel.
Transformer2DModelOutput
класс diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Параметры
- sample (
torch.Tensorформы(batch_size, num_channels, height, width)или(batch size, num_vector_embeds - 1, num_latent_pixels), если Transformer2DModel дискретный) — Выходные скрытые состояния, обусловленные входомencoder_hidden_states. Если модель дискретная, возвращает распределения вероятностей для латентных пикселей без шума.
Вывод Transformer2DModel.