【问题标题】:Keras CNN val_accuracy, loss, accuracy stuckKeras CNN val_accuracy、loss、accuracy
【发布时间】:2020-03-14 09:08:39
【问题描述】:

我在 Keras 中使用 CNN 执行二进制分类。该数据集总共有近 8k 张图像,但并不平衡——一类有大约 1500 个样本,而另一类有 6500 个样本。我没有在训练前设置随机种子。现在,当我几天前运行这个模型时,我得到了 99% 的准确率。前几天我又跑了一次——准确率达到了 99%。可以肯定的是,我又运行了 5 次,每次都得到相同的结果。现在,在我再次运行它以存储参数和绘制图表的 4 天后,我的模型停留在 85% 的准确度和 67% 的验证准确度。时代没有任何变化,它只是卡在那里。 我正在使用 flow_from_directory 动态加载图像,并在加载图像时执行一些增强。我知道权重每次都是随机初始化的,这就是为什么我存储了性能最佳模型的权重。但我只是无法重现结果。知道这里出了什么问题吗?

model = Sequential()
model.add(Conv2D(32, kernel_size=(5, 5),
                 activation='relu',
                 input_shape=(476,476,3)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(64, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(128, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(256, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))

model.compile(loss=binary_crossentropy,
              optimizer=Adam(learning_rate=0.0001),
              metrics=['accuracy'])

【问题讨论】:

    标签: python machine-learning keras deep-learning conv-neural-network


    【解决方案1】:

    在现实世界和不平衡的数据集上实现 99% 的准确率是非常不可能的,尤其是考虑到您的 ANN 与最先进的技术(例如在cats vs dogs challenge 等数据集上产生接近 99% 的准确率。另外,请注意,使用后者,您可以在平衡的设置中拥有约 25000 张图像。

    85% 的训练准确率和 67% 的验证准确率听起来是非常合理的数字,但对您的数据集一无所知。当然,您应该尝试通过增加少数派来解决不平衡问题。

    那么,为什么你之前会得到 99%?矩阵中的故障或极端运气。如果它不可重现,那就忘掉它,专注于你现在得到的结果。最后但同样重要的是,确保在任何随机过程中修复种子。

    【讨论】:

    • 嗯,我能够通过删除 dropout 层来重现结果。如果没有任何类型的预处理,在现实世界的数据集上可能无法达到 99% 的准确率,这里的创新不在模型中——它在预处理步骤中,我不能在这里分享。这是医学图像数据,85% 的准确率在这里甚至都无法接受。无论如何,感谢您的回复。
    • 我得到了多数类 99% 的测试准确率和少数类 97% 的测试准确率。如果这是一个非常不可能的前景,那么测试的准确性就会非常低。我要求您阅读生物医学图像处理领域的最新出版物 - 看看具有创新调整的简单模型确实可以提供 99% 的准确度。请不要做出这样的误导性陈述——“在现实世界和不平衡的数据集上实现 99% 的准确率是极不可能的,尤其是考虑到你的 ANN 并不接近最先进的”。
    • @SamarjeetKaur 该声明基于对大量论文的回顾以及将深度学习模型投入生产的经验。你所指的论文因没有可重复的结果而臭名昭著,研究人员经常努力正确验证该方法。 IBM Watson Health 遭受了大规模裁员,正是因为医学成像的现实离训练场还很远。几乎可以保证,当您从全新来源获取图像时(例如,相机校准会有所不同,案例新颖),您将无法获得 ANN 提供的准确性。
    • 你是 100% 正确的,我很清楚这一点。在医学图像处理中,由于数据集有限,每个结果都是主观的——有些会在 1000 张图像上产生结果,有些会在 10,000 张图像上产生结果。我无法评论已发布结果的可重复性——也许它们不是,这就是为什么此类解决方案尚未大规模实施的原因。但是,我们不能忘记,这些不可重复的研究推动了生产水平的研究。
    • 我无法立即访问大量数据,但是是的,如果我在我拥有的有限数据上显示一些结果,我肯定可以获得可信度 - 值得更多数据。根据我现在引用的结果,我可以与数据提供组织分享我的不确定性,并要求他们提供更多数据以测试我的模型的稳健性。我提出的问题完全是技术性的,与随机初始化有关,也许是现在似乎还没有结束的“极端运气”——因为我现在已经成功获得了 30 多次相同的结果。
    猜你喜欢
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 2021-03-01
    • 2020-12-13
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多