LSTM调参感悟

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



你可能感兴趣的:(深度学习,自然语言处理)