输出层没有添加激活函数softmax
虽然loss的值不高,但是accuracy的值也很低,虽然训练集的loss一致在下降,但是测试集的loss却在震荡,几乎不变。不知道该怎么解决。——2019.11.28 11:29
输出层添加了softmax激活函数之后:
为什么验证集的Loss降到一半就再不降了??是因为过拟合了吗?看别人的说法是梯度爆炸,让减小学习率,但是现在学习率是0.001,已经比较小了。
准确率并没有提升,loss也比不添加softmax时要大,而且测试集与验证集的loss差不多。——11:33
试试再次降低学习率为0.0001:
验证集的loss差不多保持在0.2.
训练的acc在上升,验证集的acc在下降,这应该是过拟合了,接下来减少神经网络层数,隐藏层由128-64-32变成了64-32:
验证集的acc稍微有所改善,应该加大epochs,由500增加到1000试试:
什么用也没有。。。
问题出在哪里?loss勉强可以,但是acc死活上不去。。。
这个说法和我的情况很像,还是要自己写一个性能函数。
跑不正确的实际情况是我没把数据集生成对,在师兄的帮助下,成功生成了数据集,在没有编码的情况下,得到如下实验结果:——2019.11.29 9:09
迭代次数为100000.
模型保存为
model.save('polar_dnn_16_8.h5')
这是未编码训练模型。
根据自己写的acc性能函数,跑出来测试集的误块率为78%,太高了。正确率22%
计算了一下误码率17.2%,正确率83.8%
加入编码过程, 运行结果如下图所示:
但是正确率还是达不到百分之90以上。
不知道这个为什么会先降低后升高。验证集的loss比未编码之间要高。迭代40000次的时候就已经收敛了。
由图可知,错误率为9.05%,正确率为84%。
然后跑一下自己写的性能函数:
误块率80.7%,误码率22.1%
还是很差劲。。。