Diffusers documentation

Transformer2DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Transformer2DModel

Модель Transformer для изображений от CompVis, основанная на Vision Transformer, предложенном Dosovitskiy et al. Transformer2DModel принимает дискретные (классы векторных эмбеддингов) или непрерывные (собственно эмбеддинги) входные данные.

Когда вход является непрерывным:

  1. Проекция входных данных и изменение их формы до (batch_size, sequence_length, feature_dimension).
  2. Примените блоки Transformer стандартным способом.
  3. Изменение формы в изображение.

Когда вход является дискретным:

Предполагается, что один из входных классов представляет собой замаскированный латентный пиксель. Предсказанные классы для изображения без шума не содержат предсказания для замаскированного пикселя, поскольку изображение без шума не может быть замаскировано.

  1. Преобразовать вход (классы латентных пикселей) в эмбеддинги и применить позиционные эмбеддинги.
  2. Примените блоки Transformer стандартным способом.
  3. Предсказать классы изображения без шума.

Transformer2DModel

класс diffusers.Transformer2DModel

< >

( 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

< >

( 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

< >

( 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.

Update on GitHub