def __init__(self, args):
super(BiLSTM_1, self).__init__()
self.args = 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
self.dropout = nn.Dropout(args.dropout)
self.dropout_embed = nn.Dropout(args.dropout_embed)
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)
if args.word_Embedding:
pretrained_weight = np.array(args.pretrained_weight)
self.embed.weight.data.copy_(torch.from_numpy(pretrained_weight))
self.bilstm = nn.LSTM(D, self.hidden_dim, num_layers=self.num_layers, bias=True, bidirectional=True,
dropout=self.args.dropout)
print(self.bilstm)
if args.init_weight:
print("Initing W .......")
init.xavier_normal(self.bilstm.all_weights[0][0], gain=np.sqrt(args.init_weight_value))
init.xavier_normal(self.bilstm.all_weights[0][1], gain=np.sqrt(args.init_weight_value))
init.xavier_normal(self.bilstm.all_weights[1][0], gain=np.sqrt(args.init_weight_value))
init.xavier_normal(self.bilstm.all_weights[1][1], gain=np.sqrt(args.init_weight_value))
self.hidden2label = nn.Linear(self.hidden_dim * 2, C)
self.hidden = self.init_hidden(self.num_layers, args.batch_size)
print("self.hidden", self.hidden)
model_BiLSTM_1.py 文件源码
python
阅读 28
收藏 0
点赞 0
评论 0
评论列表
文章目录