1. 一定要对数据进行归一化的预处理
train -= np.mean(train, axis = 0) # zero-center
train /= np.std(train, axis = 0) # normalize
test -= np.mean(test,axis=0)
test /= np.std(test,axis=0)
2. 要用正交化初始化lstm 的weight值,如果可能的话,也可以将gate的bias设为0
def init_weight(self):
for name, param in self.lstm.named_parameters():
if 'bias' in name:
nn.init.constant(param, 0.0)
print('\nbias init done')
elif 'weight' in name:
nn.init.orthogonal(param)
print('\nweight init done')
3. 可以在定义的时候加入dropout,一般设为0.5
4. batch_size不要设太大,我设的8感觉就不错(当然也有人说要大些,见仁见智)
5.learning_rate一般取0.001