def __init__(self, config):
super(BiLSTM, self).__init__()
self.drop = nn.Dropout(config['dropout'])
self.encoder = nn.Embedding(config['ntoken'], config['ninp'])
self.bilstm = nn.LSTM(config['ninp'], config['nhid'], config['nlayers'], dropout=config['dropout'],
bidirectional=True)
self.nlayers = config['nlayers']
self.nhid = config['nhid']
self.pooling = config['pooling']
self.dictionary = config['dictionary']
# self.init_weights()
self.encoder.weight.data[self.dictionary.word2idx['<pad>']] = 0
if os.path.exists(config['word-vector']):
print('Loading word vectors from', config['word-vector'])
vectors = torch.load(config['word-vector'])
assert vectors[2] >= config['ninp']
vocab = vectors[0]
vectors = vectors[1]
loaded_cnt = 0
for word in self.dictionary.word2idx:
if word not in vocab:
continue
real_id = self.dictionary.word2idx[word]
loaded_id = vocab[word]
self.encoder.weight.data[real_id] = vectors[loaded_id][:config['ninp']]
loaded_cnt += 1
print('%d words from external word vectors loaded.' % loaded_cnt)
# note: init_range constraints the value of initial weights
models.py 文件源码
python
阅读 24
收藏 0
点赞 0
评论 0
评论列表
文章目录