Python torch.nn.functional.dropout() Examples
The following are 30
code examples of torch.nn.functional.dropout().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
torch.nn.functional
, or try the search function
.
Example #1
Source File: model.py From ConvLab with MIT License | 6 votes |
def whatCellType(input_size, hidden_size, cell_type, dropout_rate): if cell_type == 'rnn': cell = nn.RNN(input_size, hidden_size, dropout=dropout_rate, batch_first=False) init_gru(cell) return cell elif cell_type == 'gru': cell = nn.GRU(input_size, hidden_size, dropout=dropout_rate, batch_first=False) init_gru(cell) return cell elif cell_type == 'lstm': cell = nn.LSTM(input_size, hidden_size, dropout=dropout_rate, batch_first=False) init_lstm(cell) return cell elif cell_type == 'bigru': cell = nn.GRU(input_size, hidden_size, bidirectional=True, dropout=dropout_rate, batch_first=False) init_gru(cell) return cell elif cell_type == 'bilstm': cell = nn.LSTM(input_size, hidden_size, bidirectional=True, dropout=dropout_rate, batch_first=False) init_lstm(cell) return cell
Example #2
Source File: modules.py From BAMnet with Apache License 2.0 | 6 votes |
def forward(self, x, x_len=None): """x: [batch_size * max_length] x_len: reserved """ x = self.embed(x) if self.dropout: x = F.dropout(x, p=self.dropout, training=self.training) # Trun(batch_size, seq_len, embed_size) to (batch_size, embed_size, seq_len) for cnn1d x = x.transpose(1, 2) z = [conv(x) for conv in self.cnns] output = [F.max_pool1d(i, kernel_size=i.size(-1)).squeeze(-1) for i in z] if len(output) > 1: output = self.fc(torch.cat(output, -1)) else: output = output[0] return None, output
Example #3
Source File: context_query_attention.py From TVQAplus with MIT License | 6 votes |
def similarity(self, C, Q, c_mask, q_mask): """ word2word dot-product similarity Args: C: (N, 5, Li, Lqa, D) Q: (N, 1, Li, Lr, D) c_mask: (N, 5, Li, Lqa) q_mask: (N, 1, Li, Lr) Returns: (N, *, Lc, Lq) """ C = F.dropout(F.normalize(C, p=2, dim=-1), p=self.dropout, training=self.training) Q = F.dropout(F.normalize(Q, p=2, dim=-1), p=self.dropout, training=self.training) S_mask = torch.matmul(c_mask.unsqueeze(-1), q_mask.unsqueeze(-2)) # (N, 5, Li, Lqa, Lr) S = torch.matmul(C, Q.transpose(-2, -1)) # (N, 5, Li, Lqa, Lr) masked_S = S - 1e10*(1 - S_mask) # (N, 5, Li, Lqa, Lr) return masked_S, S_mask
Example #4
Source File: unsup_net.py From SEDST with MIT License | 6 votes |
def __init__(self, embed_size, hidden_size, vocab_size, dropout_rate): super().__init__() self.attn_u = Attn(hidden_size) self.attn_z = Attn(hidden_size) self.gru = nn.GRU(embed_size + hidden_size, hidden_size, dropout=dropout_rate) self.ln1 = LayerNormalization(hidden_size) self.w1 = nn.Linear(hidden_size, vocab_size) self.proj_copy1 = nn.Linear(hidden_size * 2, hidden_size) self.v1 = nn.Linear(hidden_size, 1) self.proj_copy2 = nn.Linear(hidden_size * 2, hidden_size) self.v2 = nn.Linear(hidden_size, 1) self.mu = nn.Linear(vocab_size, embed_size) self.dropout_rate = dropout_rate self.gru = orth_gru(self.gru) self.copy_weight = 1
Example #5
Source File: modules.py From BAMnet with Apache License 2.0 | 6 votes |
def __init__(self, vocab_size, embed_size, hidden_size, dropout=None, \ bidirectional=False, shared_embed=None, init_word_embed=None, rnn_type='lstm', use_cuda=True): super(EncoderRNN, self).__init__() if not rnn_type in ('lstm', 'gru'): raise RuntimeError('rnn_type is expected to be lstm or gru, got {}'.format(rnn_type)) if bidirectional: print('[ Using bidirectional {} encoder ]'.format(rnn_type)) else: print('[ Using {} encoder ]'.format(rnn_type)) if bidirectional and hidden_size % 2 != 0: raise RuntimeError('hidden_size is expected to be even in the bidirectional mode!') self.dropout = dropout self.rnn_type = rnn_type self.use_cuda = use_cuda self.hidden_size = hidden_size // 2 if bidirectional else hidden_size self.num_directions = 2 if bidirectional else 1 self.embed = shared_embed if shared_embed is not None else nn.Embedding(vocab_size, embed_size, padding_idx=0) model = nn.LSTM if rnn_type == 'lstm' else nn.GRU self.model = model(embed_size, self.hidden_size, 1, batch_first=True, bidirectional=bidirectional) if shared_embed is None: self.init_weights(init_word_embed)
Example #6
Source File: modules.py From BAMnet with Apache License 2.0 | 6 votes |
def __init__(self, vocab_size, embed_size, hidden_size, \ seq_enc_type='lstm', word_emb_dropout=None, cnn_kernel_size=[3], bidirectional=False, \ shared_embed=None, init_word_embed=None, use_cuda=True): if seq_enc_type in ('lstm', 'gru'): self.que_enc = EncoderRNN(vocab_size, embed_size, hidden_size, \ dropout=word_emb_dropout, \ bidirectional=bidirectional, \ shared_embed=shared_embed, \ init_word_embed=init_word_embed, \ rnn_type=seq_enc_type, \ use_cuda=use_cuda) elif seq_enc_type == 'cnn': self.que_enc = EncoderCNN(vocab_size, embed_size, hidden_size, \ kernel_size=cnn_kernel_size, dropout=word_emb_dropout, \ shared_embed=shared_embed, \ init_word_embed=init_word_embed, \ use_cuda=use_cuda) else: raise RuntimeError('Unknown SeqEncoder type: {}'.format(seq_enc_type))
Example #7
Source File: modules.py From BAMnet with Apache License 2.0 | 6 votes |
def enc_ans_features(self, x_type_bow, x_types, x_type_bow_len, x_path_bow, x_paths, x_path_bow_len, x_ctx_ents, x_ctx_ent_len, x_ctx_ent_num): ''' x_types: answer type x_paths: answer path, i.e., bow of relation x_ctx_ents: answer context, i.e., bow of entity words, (batch_size, num_cands, num_ctx, L) ''' # ans_types = torch.mean(self.ent_type_embed(x_types.view(-1, x_types.size(-1))), 1).view(x_types.size(0), x_types.size(1), -1) ans_type_bow = (self.lstm_enc_type(x_type_bow.view(-1, x_type_bow.size(-1)), x_type_bow_len.view(-1))[1]).view(x_type_bow.size(0), x_type_bow.size(1), -1) ans_path_bow = (self.lstm_enc_path(x_path_bow.view(-1, x_path_bow.size(-1)), x_path_bow_len.view(-1))[1]).view(x_path_bow.size(0), x_path_bow.size(1), -1) ans_paths = torch.mean(self.relation_embed(x_paths.view(-1, x_paths.size(-1))), 1).view(x_paths.size(0), x_paths.size(1), -1) # Avg over ctx ctx_num_mask = create_mask(x_ctx_ent_num.view(-1), x_ctx_ents.size(2), self.use_cuda).view(x_ctx_ent_num.shape + (-1,)) ans_ctx_ent = (self.lstm_enc_ctx(x_ctx_ents.view(-1, x_ctx_ents.size(-1)), x_ctx_ent_len.view(-1))[1]).view(x_ctx_ents.size(0), x_ctx_ents.size(1), x_ctx_ents.size(2), -1) ans_ctx_ent = ctx_num_mask.unsqueeze(-1) * ans_ctx_ent ans_ctx_ent = torch.sum(ans_ctx_ent, dim=2) / torch.clamp(x_ctx_ent_num.float().unsqueeze(-1), min=VERY_SMALL_NUMBER) if self.ans_enc_dropout: # ans_types = F.dropout(ans_types, p=self.ans_enc_dropout, training=self.training) ans_type_bow = F.dropout(ans_type_bow, p=self.ans_enc_dropout, training=self.training) ans_path_bow = F.dropout(ans_path_bow, p=self.ans_enc_dropout, training=self.training) ans_paths = F.dropout(ans_paths, p=self.ans_enc_dropout, training=self.training) ans_ctx_ent = F.dropout(ans_ctx_ent, p=self.ans_enc_dropout, training=self.training) return ans_type_bow, None, ans_path_bow, ans_paths, ans_ctx_ent
Example #8
Source File: models.py From IGMC with MIT License | 6 votes |
def forward(self, data): x, edge_index, batch = data.x, data.edge_index, data.batch if self.adj_dropout > 0: edge_index, edge_type = dropout_adj( edge_index, edge_type, p=self.adj_dropout, force_undirected=self.force_undirected, num_nodes=len(x), training=self.training ) concat_states = [] for conv in self.convs: x = torch.tanh(conv(x, edge_index)) concat_states.append(x) concat_states = torch.cat(concat_states, 1) x = global_add_pool(concat_states, batch) x = F.relu(self.lin1(x)) x = F.dropout(x, p=0.5, training=self.training) x = self.lin2(x) if self.regression: return x[:, 0] else: return F.log_softmax(x, dim=-1)
Example #9
Source File: cnn.py From TVQAplus with MIT License | 6 votes |
def __init__(self, in_channels, out_channels, kernel_size, dim=1, stride=1, padding=0, relu=True, dropout=0.1): """ :param in_channels: input hidden dimension size :param out_channels: output hidden dimension size :param kernel_size: kernel size :param dim: default 1. 1D conv or 2D conv """ super(ConvRelu, self).__init__() self.relu = relu self.dropout = dropout if dim == 1: self.conv = nn.Conv1d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=stride, padding=padding) elif dim == 2: self.conv = nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=stride, padding=padding) else: raise Exception("Incorrect dimension!")
Example #10
Source File: encoder.py From TVQAplus with MIT License | 6 votes |
def __init__(self, n_conv, kernel_size=7, n_filters=128, dropout=0.1, num_heads=4): super(EncoderBlock, self).__init__() self.dropout = dropout self.n_conv = n_conv self.num_heads = num_heads self.position_encoding = PositionEncoding(n_filters=n_filters) self.layer_norm = nn.ModuleList([nn.LayerNorm(n_filters) for _ in range(n_conv)]) self.final_layer_norm = nn.LayerNorm(n_filters) self.conv = nn.ModuleList([ DepthwiseSeparableConv(in_ch=n_filters, out_ch=n_filters, k=kernel_size, relu=True) for _ in range(n_conv)]) if self.num_heads != 0: self.multi_head_attn = MultiHeadedAttention(nh=num_heads, d_model=n_filters) self.attn_layer_norm = nn.LayerNorm(n_filters)
Example #11
Source File: encoder.py From TVQAplus with MIT License | 6 votes |
def forward(self, x, mask): """ :param x: (N, L, D) :param mask: (N, L) :return: (N, L, D) """ outputs = self.position_encoding(x) # (N, L, D) for i in range(self.n_conv): residual = outputs outputs = self.layer_norm[i](outputs) if i % 2 == 0: outputs = F.dropout(outputs, p=self.dropout, training=self.training) outputs = self.conv[i](outputs) outputs = outputs + residual if self.num_heads != 0: residual = outputs outputs = self.attn_layer_norm(outputs) outputs = self.multi_head_attn(outputs, mask=mask) outputs = outputs + residual return self.final_layer_norm(outputs) # (N, L, D)
Example #12
Source File: v3_neuro.py From Attentive-Filtering-Network with MIT License | 5 votes |
def forward(self, x): x = self.features(x) #print(x.size()) x = x.view(-1, self.flat_feats) x = self.fc1(x) x = F.dropout(x, training=self.training) x = self.fc2(x) return F.sigmoid(x)
Example #13
Source File: layers.py From MnemonicReader with BSD 3-Clause "New" or "Revised" License | 5 votes |
def forward(self, x, y, x_mask, y_mask): hiddens = self.init_hiddens(y, y_mask) c, start_scores = self.pointer(x, hiddens, x_mask) c_ = F.dropout(c, p=self.dropout_rate, training=self.training) hiddens = self.cell(c_, hiddens) c, end_scores = self.pointer(x, hiddens, x_mask) return start_scores, end_scores
Example #14
Source File: densenet.py From Visualizing-CNNs-for-monocular-depth-estimation with MIT License | 5 votes |
def forward(self, x): new_features = super(_DenseLayer, self).forward(x) if self.drop_rate > 0: new_features = F.dropout( new_features, p=self.drop_rate, training=self.training) return torch.cat([x, new_features], 1)
Example #15
Source File: densenet.py From Visualizing-CNNs-for-monocular-depth-estimation with MIT License | 5 votes |
def forward(self, x): new_features = super(_DenseLayer, self).forward(x) if self.drop_rate > 0: new_features = F.dropout( new_features, p=self.drop_rate, training=self.training) return torch.cat([x, new_features], 1)
Example #16
Source File: v7_neuro.py From Attentive-Filtering-Network with MIT License | 5 votes |
def forward(self, x1, x2): x1 = self.features1(x1) x2 = self.features2(x2) x1 = x1.view(-1, self.flat_feat1) x2 = x2.view(-1, self.flat_feat2) x1 = self.fc1a(x1) x2 = self.fc1b(x2) x1 = F.dropout2d(x1, p=0.5) x2 = F.dropout2d(x2, p=0.5) x3 = torch.cat((x1,x2),dim=1) x3 = self.fc2(x3) x3 = F.dropout(x3, p=0.5) x3 = self.fc3(x3) return F.sigmoid(x3)
Example #17
Source File: v8_neuro.py From Attentive-Filtering-Network with MIT License | 5 votes |
def forward(self, x1, x2): x1 = self.features1(x1) x2 = self.features2(x2) x1 = x1.view(-1, self.flat_feat1) x2 = x2.view(-1, self.flat_feat2) x1 = self.fc1a(x1) x2 = self.fc1b(x2) x1 = F.dropout2d(x1, p=0.5) x2 = F.dropout2d(x2, p=0.5) x3 = torch.cat((x1,x2),dim=1) x3 = self.fc2(x3) x3 = F.dropout(x3, p=0.5) x3 = self.fc3(x3) return F.sigmoid(x3)
Example #18
Source File: layers.py From MnemonicReader with BSD 3-Clause "New" or "Revised" License | 5 votes |
def forward(self, x): x_proj = F.dropout(F.relu(self.linear1(x)), p=self.dropout_rate, training=self.training) x_proj = self.linear2(x_proj) return x_proj
Example #19
Source File: cheby_net.py From LanczosNetwork with MIT License | 5 votes |
def __init__(self, config): super(ChebyNet, self).__init__() self.config = config self.input_dim = config.model.input_dim self.hidden_dim = config.model.hidden_dim self.output_dim = config.model.output_dim self.num_layer = config.model.num_layer self.polynomial_order = config.model.polynomial_order self.num_atom = config.dataset.num_atom self.num_edgetype = config.dataset.num_bond_type self.dropout = config.model.dropout if hasattr(config.model, 'dropout') else 0.0 dim_list = [self.input_dim] + self.hidden_dim + [self.output_dim] self.filter = nn.ModuleList([ nn.Linear(dim_list[tt] * (self.polynomial_order + self.num_edgetype + 1), dim_list[tt + 1]) for tt in range(self.num_layer) ] + [nn.Linear(dim_list[-2], dim_list[-1])]) self.embedding = nn.Embedding(self.num_atom, self.input_dim) # attention self.att_func = nn.Sequential(*[nn.Linear(dim_list[-2], 1), nn.Sigmoid()]) if config.model.loss == 'CrossEntropy': self.loss_func = torch.nn.CrossEntropyLoss() elif config.model.loss == 'MSE': self.loss_func = torch.nn.MSELoss() elif config.model.loss == 'L1': self.loss_func = torch.nn.L1Loss() else: raise ValueError("Non-supported loss function!") self._init_param()
Example #20
Source File: sclstm.py From ConvLab with MIT License | 5 votes |
def __init__(self, hidden_size, vocab_size, d_size, dropout=0.5): super(Sclstm, self).__init__() self.hidden_size = hidden_size self.vocab_size = vocab_size self.dropout = dropout self.w2h = nn.Linear(vocab_size, hidden_size*4) self.h2h = nn.Linear(hidden_size, hidden_size*4) self.w2h_r= nn.Linear(vocab_size, d_size) self.h2h_r= nn.Linear(hidden_size, d_size) self.dc = nn.Linear(d_size, hidden_size, bias=False) self.out = nn.Linear(hidden_size, vocab_size)
Example #21
Source File: decoder_deep.py From ConvLab with MIT License | 5 votes |
def rnn_step(self, vocab_t, last_hidden, last_cell, last_dt, gen=False): ''' run a step over all layers in sclstm ''' cur_hidden, cur_cell, cur_dt = [], [], [] output_hidden = [] for i in range(self.n_layer): # prepare input_t if i == 0: input_t = vocab_t assert input_t.size(1) == self.input_size else: pre_hidden = torch.cat(output_hidden, dim=1) input_t = torch.cat((vocab_t, pre_hidden), dim=1) assert input_t.size(1) == self.input_size + i*self.hidden_size _hidden, _cell, _dt = self._step(input_t, last_hidden, last_cell[i], last_dt[i], i) cur_hidden.append(_hidden) cur_cell.append(_cell) cur_dt.append(_dt) if gen: output_hidden.append( _hidden.clone() ) else: output_hidden.append( F.dropout(_hidden.clone(), p=self.dropout, training=True) ) last_hidden, last_cell, last_dt = cur_hidden, cur_cell, cur_dt if not gen: for i in range(self.n_layer): last_hidden[i] = F.dropout(last_hidden[i], p=self.dropout, training=True) output = self.out(torch.cat(last_hidden, dim=1)) return output, last_hidden, last_cell, last_dt
Example #22
Source File: wide_resnet.py From dfw with MIT License | 5 votes |
def forward(self, x): if not self.equalInOut: x = self.relu1(self.bn1(x)) else: out = self.relu1(self.bn1(x)) out = self.relu2(self.bn2(self.conv1(out if self.equalInOut else x))) if self.droprate > 0: out = F.dropout(out, p=self.droprate, training=self.training) out = self.conv2(out) return torch.add(x if self.equalInOut else self.convShortcut(x), out)
Example #23
Source File: densenet.py From dfw with MIT License | 5 votes |
def forward(self, x): out = self.conv1(self.relu(self.bn1(x))) if self.droprate > 0: out = F.dropout(out, p=self.droprate, inplace=False, training=self.training) return F.avg_pool2d(out, 2)
Example #24
Source File: densenet.py From dfw with MIT License | 5 votes |
def forward(self, x): out = self.conv1(self.relu(self.bn1(x))) if self.droprate > 0: out = F.dropout(out, p=self.droprate, inplace=False, training=self.training) out = self.conv2(self.relu(self.bn2(out))) if self.droprate > 0: out = F.dropout(out, p=self.droprate, inplace=False, training=self.training) return torch.cat([x, out], 1)
Example #25
Source File: densenet.py From dfw with MIT License | 5 votes |
def forward(self, x): out = self.conv1(self.relu(self.bn1(x))) if self.droprate > 0: out = F.dropout(out, p=self.droprate, training=self.training) return torch.cat([x, out], 1)
Example #26
Source File: unsup_net.py From SEDST with MIT License | 5 votes |
def forward(self, z_enc_out, pz_proba, u_enc_out, m_t_input, last_hidden, flag=False): """ decode the response: P(m|u,z) :param pz_proba: [Tz,B,V], output of the prior decoder :param z_enc_out: [Tz,B,H] :param u_enc_out: [T,B,H] :param m_t_input: [1,B] :param last_hidden: :return: proba: [1,B,V] """ batch_size = z_enc_out.size(1) m_embed = self.emb(m_t_input) z_context = F.dropout(self.attn_z(last_hidden, z_enc_out), self.dropout_rate) u_context = F.dropout(self.attn_u(last_hidden, u_enc_out), self.dropout_rate) # d_control = self.w4(z_context) + torch.mul(F.sigmoid(self.gate_z(z_context)), self.w5(u_context)) gru_out, last_hidden = self.gru(torch.cat([z_context, u_context, m_embed], dim=2), last_hidden) gru_out = self.ln1(gru_out) gen_score = self.proj(gru_out).squeeze(0) z_copy_score = F.tanh( self.proj_copy1(torch.cat([z_enc_out, gru_out.repeat(z_enc_out.size(0), 1, 1)], 2))) # [T,B,H] z_copy_score = self.v1(z_copy_score).squeeze(2).transpose(0, 1) # [B,T] scores = F.softmax(torch.cat([gen_score, z_copy_score], dim=1), dim=1) gen_score, z_copy_score = scores[:, :gen_score.size(1)], scores[:, gen_score.size(1):] z_copy_score = mask_prob(z_copy_score, pz_proba.transpose(0, 1), aux=cfg.aux_device) proba = gen_score + self.copy_weight * z_copy_score # [B,V] return proba, last_hidden
Example #27
Source File: unsup_net.py From SEDST with MIT License | 5 votes |
def __init__(self, embed_size, hidden_size, vocab_size, dropout_rate, flag_size=5): super().__init__() self.emb = nn.Embedding(vocab_size, embed_size) self.attn_z = Attn(hidden_size) self.attn_u = Attn(hidden_size) self.gru = nn.GRU(embed_size + hidden_size * 2, hidden_size, dropout=dropout_rate) self.gru = orth_gru(self.gru) self.ln1 = LayerNormalization(hidden_size) self.proj = nn.Linear(hidden_size, vocab_size) self.proj_copy1 = nn.Linear(hidden_size * 2, hidden_size) self.v1 = nn.Linear(hidden_size, 1) # self.proj_copy2 = nn.Linear(hidden_size,1) self.dropout_rate = dropout_rate # orth_gru(self.gru) self.copy_weight = 1
Example #28
Source File: unsup_net.py From SEDST with MIT License | 5 votes |
def __init__(self, input_size, embed_size, hidden_size, n_layers, dropout): super(Encoder, self).__init__() self.input_size = input_size self.hidden_size = hidden_size self.embed_size = embed_size self.n_layers = n_layers self.dropout = dropout self.embedding = nn.Embedding(input_size, embed_size) self.gru = nn.GRU(embed_size, hidden_size, n_layers, bidirectional=True)
Example #29
Source File: gcnfp.py From LanczosNetwork with MIT License | 5 votes |
def __init__(self, config): super(GCNFP, self).__init__() self.config = config self.input_dim = config.model.input_dim self.hidden_dim = config.model.hidden_dim self.output_dim = config.model.output_dim self.num_layer = config.model.num_layer self.num_atom = config.dataset.num_atom self.num_edgetype = config.dataset.num_bond_type self.dropout = config.model.dropout if hasattr(config.model, 'dropout') else 0.0 dim_list = [self.input_dim] + self.hidden_dim + [self.output_dim] self.filter = nn.ModuleList([ nn.Linear(dim_list[tt] * (self.num_edgetype + 1), dim_list[tt + 1]) for tt in range(self.num_layer) ] + [nn.Linear(dim_list[-2], dim_list[-1])]) self.embedding = nn.Embedding(self.num_atom, self.input_dim) # attention self.att_func = nn.Sequential(*[nn.Linear(dim_list[-2], 1), nn.Sigmoid()]) if config.model.loss == 'CrossEntropy': self.loss_func = torch.nn.CrossEntropyLoss() elif config.model.loss == 'MSE': self.loss_func = torch.nn.MSELoss() elif config.model.loss == 'L1': self.loss_func = torch.nn.L1Loss() else: raise ValueError("Non-supported loss function!") self._init_param()
Example #30
Source File: dcnn.py From LanczosNetwork with MIT License | 5 votes |
def __init__(self, config): super(DCNN, self).__init__() self.config = config self.input_dim = config.model.input_dim self.hidden_dim = config.model.hidden_dim self.output_dim = config.model.output_dim self.num_layer = config.model.num_layer self.diffusion_dist = config.model.diffusion_dist self.num_scale = len(self.diffusion_dist) self.max_dist = max(config.model.diffusion_dist) self.num_atom = config.dataset.num_atom self.num_edgetype = config.dataset.num_bond_type self.dropout = config.model.dropout if hasattr(config.model, 'dropout') else 0.0 dim_list = [self.input_dim] + self.hidden_dim + [self.output_dim] self.filter = nn.ModuleList([ nn.Linear(dim_list[tt] * (self.num_scale + self.num_edgetype + 1), dim_list[tt + 1]) for tt in range(self.num_layer) ] + [nn.Linear(dim_list[-2], dim_list[-1])]) self.embedding = nn.Embedding(self.num_atom, self.input_dim) # attention self.att_func = nn.Sequential(*[nn.Linear(dim_list[-2], 1), nn.Sigmoid()]) if config.model.loss == 'CrossEntropy': self.loss_func = torch.nn.CrossEntropyLoss() elif config.model.loss == 'MSE': self.loss_func = torch.nn.MSELoss() elif config.model.loss == 'L1': self.loss_func = torch.nn.L1Loss() else: raise ValueError("Non-supported loss function!") self._init_param()