首先要看在trainning set上的预测结果是不是够好,如果traing set上的结果不够好的话:
- 可以改变loss function,一般来说分类的时候,使用“mse”的预测结果不如“cross_entropy”。
- 调整适当的batch_size,不宜过大或者过小,100是个不错的选择。
- 可以加深网络,不过由于sigmod函数问题,可能训练结果不够好,可以改为relu函数作为激活函数。
- 对数据进行前期处理非常重要,在输入到网络之前,应该将网络nomalized。
当训练结果比较好,而预测结果比较差时:
- early stopping,早点停止训练
- 在每一层上加入dropout,training上的结果会变差,但是test上的结果会变得更好。
注:adam的训练时收敛的速度要比sgd要快