在阅读F. Chollet的优秀书籍时,我正在尝试使用Keras/Tensorflow,在一个简单的Sequential
模型上进行训练,该模型使用来自物理分析模型的模拟图像进行训练。
由于完全控制了模拟,我编写了一个generator
,它产生无限的数据和标签批次流,我在Keras中使用fit_generator
来使用这些数据。生成的数据从不相同,并且我还可以为每张图像添加一些随机噪声。
现在我在想:如果模型在从一个epoch到下一个epoch之间从未见过相同的数据,是否会成为问题?我是否可以假设我无法降低损失的原因不是因为数据是“无限”的(所以我只需要专注于超参数调优)?如果您对处理模拟数据的深度学习有任何建议,请随时提出。
回答:
一个训练良好的网络会从数据中识别出模式,优先处理新数据而不是旧数据。如果你的数据来自一个恒定的分布,这并不重要,但如果那个分布随时间变化,它应该(缓慢地)适应更近期的分布。
数据从不相同这一事实并不重要。大多数训练网络使用某种形式的数据增强(例如,对于图像处理,常见的做法是对图像进行随机裁剪、旋转、调整大小和颜色操作等,因此即使来自同一基础图像,每个示例也从不相同)。