| 139 | |
| 140 | class SCPred(nn.Module): |
| 141 | def __init__(self, d_msa=256, d_state=32, d_hidden=128, p_drop=0.15): |
| 142 | super(SCPred, self).__init__() |
| 143 | self.norm_s0 = nn.LayerNorm(d_msa) |
| 144 | self.norm_si = nn.LayerNorm(d_state) |
| 145 | self.linear_s0 = nn.Linear(d_msa, d_hidden) |
| 146 | self.linear_si = nn.Linear(d_state, d_hidden) |
| 147 | |
| 148 | # ResNet layers |
| 149 | self.linear_1 = nn.Linear(d_hidden, d_hidden) |
| 150 | self.linear_2 = nn.Linear(d_hidden, d_hidden) |
| 151 | self.linear_3 = nn.Linear(d_hidden, d_hidden) |
| 152 | self.linear_4 = nn.Linear(d_hidden, d_hidden) |
| 153 | |
| 154 | # Final outputs |
| 155 | self.linear_out = nn.Linear(d_hidden, 20) |
| 156 | |
| 157 | self.reset_parameter() |
| 158 | |
| 159 | def reset_parameter(self): |
| 160 | # normal initialization |