今天在训练自己定义的网络时,用Tensorboard观察Train/Val 的loss在训练时的变化,发现了下面loss会周期性剧增的情况:
通过观察loss具体的数值变化,我发现每次loss剧增都发生在一个epoch的最后一轮。
通过分析,我判断出这是由于我的图片数量不能被batch size整除导致的。
我的train/val分别有2450,610张图片,batch size为32,这使得每个epoch最后一次迭代的图片很少。
由于每轮训练的loss是所有图片loss的平均。当图片数量很少时,随机性更大,平均下来loss就更高了。