def __init__(self, args):
super(LSTM, self).__init__()
self.args = args
# print(args)
self.hidden_dim = args.lstm_hidden_dim
self.num_layers = args.lstm_num_layers
V = args.embed_num
D = args.embed_dim
C = args.class_num
if args.max_norm is not None:
print("max_norm = {} ".format(args.max_norm))
self.embed = nn.Embedding(V, D, max_norm=args.max_norm, scale_grad_by_freq=True)
else:
print("max_norm = {} |||||".format(args.max_norm))
self.embed = nn.Embedding(V, D, scale_grad_by_freq=True)
# word embedding
if args.word_Embedding:
pretrained_weight = np.array(args.pretrained_weight)
self.embed.weight.data.copy_(torch.from_numpy(pretrained_weight))
# lstm
self.lstm = nn.LSTM(D, self.hidden_dim, dropout=args.dropout, num_layers=self.num_layers)
if args.init_weight:
print("Initing W .......")
# n = self.lstm.input_size * self.lstm
init.xavier_normal(self.lstm.all_weights[0][0], gain=np.sqrt(args.init_weight_value))
init.xavier_normal(self.lstm.all_weights[0][1], gain=np.sqrt(args.init_weight_value))
# linear
self.hidden2label = nn.Linear(self.hidden_dim, C)
# hidden
self.hidden = self.init_hidden(self.num_layers, args.batch_size)
# dropout
self.dropout = nn.Dropout(args.dropout)
self.dropout_embed = nn.Dropout(args.dropout_embed)
model_LSTM.py 文件源码
python
阅读 21
收藏 0
点赞 0
评论 0
评论列表
文章目录