File size: 781 Bytes
1ea89dd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import torch
import torch.nn as nn

from .layer_scale import LayerScale


class Addition(nn.Module):
    def __init__(
        self,
        dim: int,
        layer_scale: float | torch.Tensor = 1e-5,
    ) -> None:
        super().__init__()
        self.ls1 = LayerScale(dim, layer_scale) if layer_scale > 0.0 else nn.Identity()

    def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor:
        return x + self.ls1(y)


class Concat(nn.Module):
    def __init__(
        self,
        dim: int,
        layer_scale: float | torch.Tensor = 1e-5,
    ) -> None:
        super().__init__()
        self.project = nn.Linear(2 * dim, dim)

    def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor:
        return self.project(torch.cat([x, y], dim=-1))