接着上一篇文章,鉴于神经网络编码器的性能无法达到重建的要求,笔者最开始是直接调节模型中间层的数量并增加隐藏层的层数,但是模型的性能依旧不满意。这几天笔者暂停了模型调整工作,将思路移到其他领域,给脑子放个假,昨晚睡觉前突然想到其中一种重要的参数-学习率lr。自学自用,有时真的会被关键点卡住,只能花时间精力慢慢的磨。
编码器笔者是复用fashion-minst数据集,学习率也是保持它的原值未变,为1.5。但是针对笔者的语音重建任务和fashion-minst数据集存在差异性 ,那么学习率这么大训练可能已经发散,那么应该将学习率lr设置较低,才能收敛到最优解,但是时间就会较长,然后再根据实际情况再增加学习率。
![](https://img.haomeiwen.com/i24447700/97e6f862609db226.png)
那么突然翻开以前学习的机器学习实战里面的说明,在遇到模型性能不满意时,应该怎么调整超参数呢?有个顺序可以作为参考:
1、首先学习率;
2、尝试使用另一个优化器;
3、尝试调整模型超参数(层数、每层神经元,激活函数类型等);
4、其他超参数(批处理大小)
调节了一晚的学习率,每训练一个轮次就要10几分钟,电脑太次了。设置learning_rate=0.02,训练两个轮次,发现loss偏高(初始0.6934):loss: 0.6829 - val_loss: 0.6705 ,重建后的语音仍没有学习到重要的信息,还是噪声。如果将epochs加大,可能loss会小很多,但是计算时间将会成倍增加。
![](https://img.haomeiwen.com/i24447700/79462abf465b53f3.png)
迈出一步,待笔者有好的计算资源再调节吧。或者,笔者直接跳过,直接使用循环编码器,那就不需要裁剪语音到固定维度了。
自动编码器encoder:裁剪语音到固定维度
oneclassSVM:裁剪语音到固定维度,提取MFCCs特征并标准化
那么循环编码器可以实现自由维度的判别,更加方便快捷但是模型较为更复杂、计算复杂度更高。
网友评论