我如何知道我的 NN TensorFlow 模型是否过拟合?

数据挖掘 Python 神经网络 张量流 准确性 过拟合
2022-03-09 21:39:56

我是 TensorFlow(Python)的新手,我无法根据训练和测试的准确性来判断我获得的结果

我正在使用学习系数等于 10^(-4) 的 GradientDescentOptimizer,并且我执行了以下代码:

for gg  in range (1501):
    session.run(optimizer, feed_dict=train_data)
    train_accuracy = session.run(accuracy, feed_dict=train_data)
    if gg % 100 ==0 :
        #print(train_accuracy)
        session.run(optimizer, feed_dict=test_data)
        test_accuracy = session.run(accuracy, feed_dict=test_data)
        print(test_accuracy)  

有一次我评论了测试准确度,只打印了训练准确度,有一次我做了相反的事情。我已将它们存储在下表中: 我得到的表

我的问题是我无法检测到是否存在过度拟合,请您帮帮我!

2个回答

简短的回答,不,看起来您并没有过度拟合。您的验证(您称之为测试)准确性似乎与您的训练准确性非常接近。

检查自己的最简单方法是绘制每次迭代的训练和验证准确度,然后查看曲线的行为。您希望看到的是紧随您的验证曲线的测试曲线。

过度拟合也可能以多种方式出现,您的验证曲线比您的训练曲线低很多和/或当训练曲线增加时验证曲线正在减少。

这两种行为都可以在这张图片中看到:

显示过拟合和没有过拟合的图

图片取自斯坦福的 CS231n

编辑:正如 gunes 指出的那样,您似乎有一个编程错误,应该在任何过度拟合检查之前解决。

正如@Simon 指出的那样,准确性并不表示警告,但您似乎在每 100 次迭代时都在使用测试数据训练优化器,这使得我们的所有结论都无效。

即线 session.run(optimizer, feed_dict=test_data)