MCPcopy Create free account
hub / github.com/Sin3DM/Sin3DM / DecoderMLPSkipConcat

Class DecoderMLPSkipConcat

src/encoding/blocks.py:65–91  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

63
64
65class DecoderMLPSkipConcat(nn.Module):
66 def __init__(self, in_channels, out_channels, hidden_channels, num_hidden_layers, posenc=0) -> None:
67 super().__init__()
68 self.posenc = posenc
69 if posenc > 0:
70 self.PE = SinusoidalEncoder(in_channels, 0, posenc, use_identity=True)
71 in_channels = self.PE.latent_dim
72 first_layer_list = [nn.Linear(in_channels, hidden_channels), nn.ReLU()]
73 for _ in range(num_hidden_layers // 2):
74 first_layer_list.append(nn.Linear(hidden_channels, hidden_channels))
75 first_layer_list.append(nn.ReLU())
76 self.first_layers = nn.Sequential(*first_layer_list)
77
78 second_layer_list = [nn.Linear(in_channels + hidden_channels, hidden_channels), nn.ReLU()]
79 for _ in range(num_hidden_layers // 2 - 1):
80 second_layer_list.append(nn.Linear(hidden_channels, hidden_channels))
81 second_layer_list.append(nn.ReLU())
82 second_layer_list.append(nn.Linear(hidden_channels, out_channels))
83 self.second_layers = nn.Sequential(*second_layer_list)
84
85 def forward(self, x):
86 if self.posenc > 0:
87 x = self.PE(x)
88 h = self.first_layers(x)
89 h = torch.cat([x, h], dim=-1)
90 h = self.second_layers(h)
91 return h
92
93
94class SiLU(nn.Module):

Callers 2

__init__Method · 0.85
__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected