У меня такая же проблема. Вот те подходы, которые я использовал:
Периодически снижать скорость обучения
Периодическое снижение скорости обучения не только повышает точность проверки, но также уменьшает дисперсию точности в конце обучения.
Например, разделив скорость обучения на 5
Epochs Learning rate
0-4000 5e-4
4000-5000 1e-4
5000-6000 2e-5
etc
Вы также можете отслеживать это автоматически. Например, если потеря не значительно уменьшилась за последние N партий, уменьшите скорость обучения и перезапустите счет. После того, как M уменьшится, прекратите тренировку.
Повторите эксперимент
Точность, которую вы получите, будет зависеть от начальных случайных весов, назначенных при создании сети. Таким образом, даже при использовании снижения скорости обучения, вы все равно получите разные результаты. Повторите эксперимент и возьмите среднее. Это займет много времени, в зависимости от вашего набора данных.