MCPcopy Create free account
hub / github.com/QWTforGithub/T2LDM / __init__

Method __init__

timm/models/layers/eca.py:60–82  ·  view source on GitHub ↗
(
            self, channels=None, kernel_size=3, gamma=2, beta=1, act_layer=None, gate_layer='sigmoid',
            rd_ratio=1/8, rd_channels=None, rd_divisor=8, use_mlp=False)

Source from the content-addressed store, hash-verified

58 gate_layer: gating non-linearity to use
59 """
60 def __init__(
61 self, channels=None, kernel_size=3, gamma=2, beta=1, act_layer=None, gate_layer='sigmoid',
62 rd_ratio=1/8, rd_channels=None, rd_divisor=8, use_mlp=False):
63 super(EcaModule, self).__init__()
64 if channels is not None:
65 t = int(abs(math.log(channels, 2) + beta) / gamma)
66 kernel_size = max(t if t % 2 else t + 1, 3)
67 assert kernel_size % 2 == 1
68 padding = (kernel_size - 1) // 2
69 if use_mlp:
70 # NOTE 'mlp' mode is a timm experiment, not in paper
71 assert channels is not None
72 if rd_channels is None:
73 rd_channels = make_divisible(channels * rd_ratio, divisor=rd_divisor)
74 act_layer = act_layer or nn.ReLU
75 self.conv = nn.Conv1d(1, rd_channels, kernel_size=1, padding=0, bias=True)
76 self.act = create_act_layer(act_layer)
77 self.conv2 = nn.Conv1d(rd_channels, 1, kernel_size=kernel_size, padding=padding, bias=True)
78 else:
79 self.conv = nn.Conv1d(1, 1, kernel_size=kernel_size, padding=padding, bias=False)
80 self.act = None
81 self.conv2 = None
82 self.gate = create_act_layer(gate_layer)
83
84 def forward(self, x):
85 y = x.mean((2, 3)).view(x.shape[0], 1, -1) # view for 1d conv

Callers 1

__init__Method · 0.45

Calls 2

make_divisibleFunction · 0.85
create_act_layerFunction · 0.85

Tested by

no test coverage detected