tensorflow - 使用 Tensorflow 训练神经网络时避免过度拟合

标签 tensorflow machine-learning neural-network tensorboard training-data

我正在使用 Tensorflow 的对象检测 API 训练神经网络来检测汽车。我使用以下 YouTube 视频来学习和执行该过程。

https://www.youtube.com/watch?v=srPndLNMMpk&t=65s

他的系列的第 1 部分到第 6 部分。

现在,在他的视频中,他提到当损失值平均达到 ~1 或更低时停止训练,并且需要大约 10000 步。

就我而言,现在是 7500 步,损失值不断在 0.6 到 1.3 之间波动。

很多人在评论部分提示这个系列的误报,但我认为这是因为不必要的长时间训练过程(因为他们不知道什么时候停止?)导致过度拟合!

我想避免这个问题。我想要的不是最优化的权重,而是相当优化的权重,同时避免错误检测或过度拟合。我也在观察 Tensorboard 的“Total Loss”部分。它在0.8到1.2之间波动。我什么时候停止训练过程?

我还想知道一般情况下,‘停止训练’取决于哪些因素?平均损失总是在 1 或更少吗?

附加信息: 我的训练数据有大约 300 张图像 测试数据 ~ 20 张图像

由于我使用的是迁移学习的概念,因此我选择了 ssd_mobilenet_v1.model。

Tensorflow 版本 1.9(在 CPU 上) Python版本3.6

谢谢!

最佳答案

您应该使用不同于训练集和测试集的验证测试。

在每个时期,您都会计算训练集和验证集的损失。 如果验证损失开始增加,请停止训练。您现在可以在测试集上测试您的模型。

验证集大小通常与测试集大小相同。例如,训练集为 70%,验证集和测试集各为 15%。

此外,请注意,数据集中的 300 张图像似乎还不够。你应该增加它。

对于您的其他问题: 损失是错误的总和,因此取决于问题和数据。在这方面,损失 1 并没有多大意义。切勿依靠它来停止您的训练。

关于tensorflow - 使用 Tensorflow 训练神经网络时避免过度拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51987076/

相关文章:

computer-science - 关于VC维度的问题

c++ - 深度神经网络的图像识别精度,float 还是 double?

artificial-intelligence - 神经网络架构设计

machine-learning - 如何使用 RGB 图像训练 CNN

python-3.x - 如何在 cocoa 数据集中定义内部多边形?

tensorflow - 如何使用 Tensorflow 的 Dataset API 将数据移动到多个 GPU 塔

machine-learning - 拼写检查器使用语言模型

c# - 使用分类算法将全名分为名字和姓氏?

python - Tensorflow 将 pb 文件转换为 tflite

tensorflow - 如何在 TensorFlow 图中读取 Ogg 或 MP3 音频文件?