因为上一次作业已经写过Logistic Regression了,这次就写parser好了。原理都是差不多的,主要是加了dropout。
class ParserModel(nn.Module):
def __init__(self, config, word_embeddings=None, pos_embeddings=None,dep_embeddings=None):
super(ParserModel, self).__init__()
self.config = config
n_w = config.word_features_types # 18
n_p = config.pos_features_types # 18
n_d = config.dep_features_types # 12
self.word_embeddings = word_embeddings
self.pos_embeddings = pos_embeddings # TODO
self.dep_embeddings = dep_embeddings
self.layer1 = nn.Linear((n_w + n_p + n_d)* self.config.embedding_dim, self.config.l1_hidden_size) # 2400, 200
self.dropout = nn.Dropout(self.config.keep_prob)
self.outlayer = nn.Linear(self.config.l1_hidden_size, self.config.num_classes)
self.init_weights()
def init_weights(self):
initrange = 0.01
self.layer1.weight.data.uniform_(-initrange, initrange)
self.layer1.bias.data.zero_()
self.outlayer.weight.data.uniform_(-initrange, initrange)
self.outlayer.bias.data.zero_()
def cubic(self,</