今天复现了文章中的一个模型,刚开始学习率lr=0.01,准确率总是为20%(分类目标有5个类),基本不变。刚开始我以为给模型的数据传错了,或者模型的处理有那个步骤有问题。最终多次尝试后,发现把学习率降低,结果就有效了,如我把学习率降低为lr=0.001,然后就好使了。
总结①:如果准确率基本没变,可以考虑一下是不是学习率调大了。
今天又发现了一个调整的方法,学习率调整准确率没变化,然后我换了一个损失函数就好使了。我做的这个项目是预测流量的类别,用的LSTM模型,经查阅大部分人都用的是NLLLoss(福对数似然损失),而我当时不懂,用的是CrossEntropyLoss(交叉熵损失)。将损失函数交换后,结果就好使了。这个是基础知识,我得好好补一补了。
总结②:如果准确率基本没变,尝试更换一下损失函数。
又有新发现,网络层次太深反而准确率等评价指标不太好,而如果层次浅一些,前几层网络宽一些(神经元个数多一些),对分类效果有很好的提升。
总结③:如果准确率基本没变,尝试减少层数,增加层宽度。
妈耶,又遇到了新问题,准确率上不去,最后,通过更换激活函数,好使了,神奇。
总结③:如果准确率基本没变,尝试更换损失函数。