(
self,
channels,
num_res_blocks: int,
hidden_size,
hidden_dropout,
ln_elementwise_affine,
layer_norm_eps,
use_bias,
block_num_heads,
attention_dropout,
downsample: bool,
upsample: bool,
)
| 243 | |
| 244 | class UVitBlock(nn.Module): |
| 245 | def __init__( |
| 246 | self, |
| 247 | channels, |
| 248 | num_res_blocks: int, |
| 249 | hidden_size, |
| 250 | hidden_dropout, |
| 251 | ln_elementwise_affine, |
| 252 | layer_norm_eps, |
| 253 | use_bias, |
| 254 | block_num_heads, |
| 255 | attention_dropout, |
| 256 | downsample: bool, |
| 257 | upsample: bool, |
| 258 | ): |
| 259 | super().__init__() |
| 260 | |
| 261 | if downsample: |
| 262 | self.downsample = Downsample2D( |
| 263 | channels, |
| 264 | use_conv=True, |
| 265 | padding=0, |
| 266 | name="Conv2d_0", |
| 267 | kernel_size=2, |
| 268 | norm_type="rms_norm", |
| 269 | eps=layer_norm_eps, |
| 270 | elementwise_affine=ln_elementwise_affine, |
| 271 | bias=use_bias, |
| 272 | ) |
| 273 | else: |
| 274 | self.downsample = None |
| 275 | |
| 276 | self.res_blocks = nn.ModuleList( |
| 277 | [ |
| 278 | ConvNextBlock( |
| 279 | channels, |
| 280 | layer_norm_eps, |
| 281 | ln_elementwise_affine, |
| 282 | use_bias, |
| 283 | hidden_dropout, |
| 284 | hidden_size, |
| 285 | ) |
| 286 | for i in range(num_res_blocks) |
| 287 | ] |
| 288 | ) |
| 289 | |
| 290 | self.attention_blocks = nn.ModuleList( |
| 291 | [ |
| 292 | SkipFFTransformerBlock( |
| 293 | channels, |
| 294 | block_num_heads, |
| 295 | channels // block_num_heads, |
| 296 | hidden_size, |
| 297 | use_bias, |
| 298 | attention_dropout, |
| 299 | channels, |
| 300 | attention_bias=use_bias, |
| 301 | attention_out_bias=use_bias, |
| 302 | ) |
no test coverage detected