MCPcopy Create free account
hub / github.com/ml-explore/mlx-examples / __init__

Method __init__

stable_diffusion/stable_diffusion/unet.py:273–401  ·  view source on GitHub ↗
(self, config: UNetConfig)

Source from the content-addressed store, hash-verified

271 """The conditional 2D UNet model that actually performs the denoising."""
272
273 def __init__(self, config: UNetConfig):
274 super().__init__()
275
276 self.conv_in = nn.Conv2d(
277 config.in_channels,
278 config.block_out_channels[0],
279 config.conv_in_kernel,
280 padding=(config.conv_in_kernel - 1) // 2,
281 )
282
283 self.timesteps = nn.SinusoidalPositionalEncoding(
284 config.block_out_channels[0],
285 max_freq=1,
286 min_freq=math.exp(
287 -math.log(10000) + 2 * math.log(10000) / config.block_out_channels[0]
288 ),
289 scale=1.0,
290 cos_first=True,
291 full_turns=False,
292 )
293 self.time_embedding = TimestepEmbedding(
294 config.block_out_channels[0],
295 config.block_out_channels[0] * 4,
296 )
297
298 if config.addition_embed_type == "text_time":
299 self.add_time_proj = nn.SinusoidalPositionalEncoding(
300 config.addition_time_embed_dim,
301 max_freq=1,
302 min_freq=math.exp(
303 -math.log(10000)
304 + 2 * math.log(10000) / config.addition_time_embed_dim
305 ),
306 scale=1.0,
307 cos_first=True,
308 full_turns=False,
309 )
310 self.add_embedding = TimestepEmbedding(
311 config.projection_class_embeddings_input_dim,
312 config.block_out_channels[0] * 4,
313 )
314
315 # Make the downsampling blocks
316 block_channels = [config.block_out_channels[0]] + list(
317 config.block_out_channels
318 )
319 self.down_blocks = [
320 UNetBlock2D(
321 in_channels=in_channels,
322 out_channels=out_channels,
323 temb_channels=config.block_out_channels[0] * 4,
324 num_layers=config.layers_per_block[i],
325 transformer_layers_per_block=config.transformer_layers_per_block[i],
326 num_attention_heads=config.num_attention_heads[i],
327 cross_attention_dim=config.cross_attention_dim[i],
328 resnet_groups=config.norm_num_groups,
329 add_downsample=(i < len(config.block_out_channels) - 1),
330 add_upsample=False,

Callers 5

__init__Method · 0.45
__init__Method · 0.45
__init__Method · 0.45
__init__Method · 0.45
__init__Method · 0.45

Calls 4

TimestepEmbeddingClass · 0.85
UNetBlock2DClass · 0.85
ResnetBlock2DClass · 0.85
Transformer2DClass · 0.85

Tested by

no test coverage detected