我正在使用 TensorFlow 来训练一个简单的神经网络(3 个连续的密集层)。问题是每次我从头开始重新训练时,准确性都会发生很大变化。我知道,由于权重是随机初始化的,它可能并不总是达到完全相同的精度;但是,我在测试集上的准确率范围为 4%。
这种变化使得无法检查网络的不同配置或数据的不同预处理步骤是否工作得更好或更差,因为配置/预处理是一个好/坏的主意,或者只是因为我对随机初始权重感到幸运/不幸。
这是 5 次连续训练 + 测试的准确度示例。数字是:
- 训练集上的精度
- 验证拆分的准确性 (20%)
- 测试集的准确性
- MSE
1. 2. 3. 4.
Run #1: 95 91 74 20
Run #2: 94 92 75 18
Run #3: 94 91 74 20
Run #4: 94 92 73 20
Run #5: 94 91 77 17
我还发现训练、验证和测试集的准确性之间没有相关性,这让我感到困惑。
我尝试了 ANN 的不同配置、更长的训练、更短的训练、更大和更小的验证拆分、不同的优化器......似乎没有什么能让我在重新训练中获得更稳定的准确性。我在这里发布的数字是我能得到的最好的数字。
4%的范围是正常的吗?有没有办法避免那些次优的培训?这可能是与局部最小值有关的问题吗?