我正在运行一个神经网络将音频文件分类为 4 类。这使用了 3300 个 1 分钟的文件,它们大致均匀地分布在各个类中。我将其拆分为 80:10:10 train:validation:test 集。这训练了 50 个 epoch,我从具有最佳验证精度的 epoch 中保存模型,然后使用该模型对测试数据进行推断。
但是,如果我重复运行网络,准确性通常会大不相同。一次重复可能为 98%,下一次为 16%,在多次重复中平均约为 57%。这发生在训练、验证和测试数据上。就好像它经常训练失败,但有时却有幸运的突破。
使用一些预定义的特征和随机森林,我可以在 0.05 StDev 的情况下获得大约 83% 的准确度,所以我知道任务可以始终如一地以良好的准确度完成。当我运行神经网络只对两个类别进行分类时,它也始终表现良好(89%)。
我正在使用的网络改编自这个github repo(添加了一些花里胡哨来获得准确性等),它本身是改编自 VGG 图像分类器。我已经对我能想到的所有内容进行了错误测试,如果我使用相同音频的重复运行它(例如,每个类中的 3 个文件重复 100 次)并将这些文件也放入 val/test 数据中,它会做得很好(99 % 准确度)。
关于什么可能导致这些巨大的准确性差异以及如何解决它的任何想法?我对深度学习有点陌生,所以可能忽略了简单的想法。