Python Keras CNN val_精度、损失、精度卡滞

Python Keras CNN val_精度、损失、精度卡滞,python,machine-learning,keras,deep-learning,conv-neural-network,Python,Machine Learning,Keras,Deep Learning,Conv Neural Network,我正在Keras中使用CNN执行二进制分类。该数据集总共有近8k个图像,但并不平衡——一个类有大约1500个样本,而另一个类有6500个样本。在训练前,我不会随意设定种子。几天前,当我运行这个模型时,我得到了99%的准确率。前几天我又运行了一次,获得了99%的准确率。为了确定,我又运行了5次,每次都得到了相同的结果。现在,当我再次运行它来存储参数和绘制图表时,间隔了4天之后,我的模型被困在85%的准确率和67%的验证准确率。各个时代都没有什么变化,只是停留在那里。 我正在使用来自目录的flow_

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

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'])

在真实世界和不平衡的数据集上,99%的准确率是非常不可能的,特别是考虑到您的ANN在任何地方都不接近最先进的水平,例如,在类似的数据集上产生接近99%的准确率。另外,请注意,使用后者,您可以在平衡设置中获得约25000张图像

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


那么,为什么你之前会得到99%的回报呢?矩阵中的小故障或极度幸运。如果它不可复制,忘掉它,专注于你现在得到的结果。最后但并非最不重要的一点是,确保将种子固定在任何随机进程上。

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