1. BP时 注意loss value 优化是否完美
避免构建的GNN model在BP时陷入梯度消失或梯度爆炸,这都会导致model performance很差。
修正方法:
- Batch normalization
- torch.nn.BatchNorm1d()
- 激活函数
- torch.nn.ELU(); torch.nn.ReLU(); torch.nn.Sigmoid()
- dropout
目标时将BP loss value优化区间从在100-40,优化到10-5.
- For example,理想loss value 从40经过3轮BP就降到10,然后后面10轮BP将loss value降到5左右。loss value 优化的是否完美从很大程度上可以反映模型构建的是否完美,反映模型performance是否优秀!而不用一次次费心费力的跑完全部过程,查看5次平均最终结果来比较模型性能!
- loss value持续大于100多200,容易陷入梯度爆炸
- loss value持续小于1或5,容易陷入梯度消失
- 梯度爆炸和梯度消失,都不利于model调参。
Note that:一定要在training时将loss value打印出来,时时查看!!!
print('triplet_loss: ', loss)
print('gcl_loss: ', gcl_loss)
message = '\n triplet_loss{:.2f} '.format(loss)
message += '\n gcl_loss{:.2f} '.format(gcl_loss)
with open(save_path_i + '/log.txt', 'a') as f:
f.write(message)