Deep Learning注意事项不完全总结
- data set如果是通过matlab生成的,导入前是否用permute命令进行了维度转换,因为Python数据读入时维度会逆转。
- 数据是否进行了Normalization。
- 根据数据的特点,是否选错了激活函数,如果输入的数据有正有负,那么肯定不能使用Relu激活函数,至少要使用leak Relu。当然,更好的选择是tanh。
- 建立好模型之后,首先要检查能否在小的dataset上overfitting。
- 根据网络的任务选择对应的激活函数(activation)和损失函数(loss):
> 二分类问题:sigmoid+cross_entropy
> 多分类问题:softmax+cross_entropy
> 回归问题:激活函数可以考虑数据normalization之后使用tanh,loss可以用均方误差MSE或者余弦距离
损伤识别中的单损伤定性是多分类问题,而定量则是回归问题。
- 不同的任务需要不同的loss,需要及时follow最新的paper。
- 注意split ratio,如果数据集不够大,那么training:validation至少应该在3:2左右。
- 如果要用实验的数据来validate模拟数据train出的网络,那么要保证模拟的参数尽可能和实验一致,例如:
- 模态信息尽可能一致。
- 如果不能保证所有模态信息一样,那么优先保证低阶模态一致,可以降采样或者滤波来去掉高频信息。
- 荷载形式尽可能一致。
- 阻尼参数尽可能一致。
- 模态信息尽可能一致。
- 对于不复杂的任务,如果过拟合,除了提高ratio外,还应该降低网络的复杂程度,把超参数的数量降下来。 10 如果碰到training acc稳定提升然而val_acc反复横跳中越来越高,可以加大batch size或者删除batch normalization,BN的存在使得每一层强制归位,特征不稳定。