Initialize Conv2d. Args: in_channels: TODO. out_channels: TODO. kernel_size: Size/dimension parameter. r: TODO. lora_alpha: TODO. lora_dropout: TODO. merge_weights: TO
(
self,
in_channels: int,
out_channels: int,
kernel_size: int,
r: int = 0,
lora_alpha: int = 1,
lora_dropout: float = 0.0,
merge_weights: bool = True,
**kwargs
)
| 393 | class Conv2d(nn.Conv2d, LoRALayer): |
| 394 | # LoRA implemented in a dense layer |
| 395 | def __init__( |
| 396 | self, |
| 397 | in_channels: int, |
| 398 | out_channels: int, |
| 399 | kernel_size: int, |
| 400 | r: int = 0, |
| 401 | lora_alpha: int = 1, |
| 402 | lora_dropout: float = 0.0, |
| 403 | merge_weights: bool = True, |
| 404 | **kwargs |
| 405 | ): |
| 406 | """Initialize Conv2d. |
| 407 | |
| 408 | Args: |
| 409 | in_channels: TODO. |
| 410 | out_channels: TODO. |
| 411 | kernel_size: Size/dimension parameter. |
| 412 | r: TODO. |
| 413 | lora_alpha: TODO. |
| 414 | lora_dropout: TODO. |
| 415 | merge_weights: TODO. |
| 416 | **kwargs: Additional keyword arguments. |
| 417 | """ |
| 418 | nn.Conv2d.__init__(self, in_channels, out_channels, kernel_size, **kwargs) |
| 419 | LoRALayer.__init__( |
| 420 | self, r=r, lora_alpha=lora_alpha, lora_dropout=lora_dropout, merge_weights=merge_weights |
| 421 | ) |
| 422 | assert type(kernel_size) is int |
| 423 | # Actual trainable parameters |
| 424 | if r > 0: |
| 425 | self.lora_A = nn.Parameter( |
| 426 | self.weight.new_zeros((r * kernel_size, in_channels * kernel_size)) |
| 427 | ) |
| 428 | self.lora_B = nn.Parameter( |
| 429 | self.weight.new_zeros((out_channels * kernel_size, r * kernel_size)) |
| 430 | ) |
| 431 | self.scaling = self.lora_alpha / self.r |
| 432 | # Freezing the pre-trained weight matrix |
| 433 | self.weight.requires_grad = False |
| 434 | self.reset_parameters() |
| 435 | |
| 436 | def reset_parameters(self): |
| 437 | """Reset parameters.""" |
nothing calls this directly
no test coverage detected