项目:利用卷积神经网络判断乳腺X光片中是否存在良性或恶性肿瘤。
这是GitHub仓库的链接:https://github.com/aubreyDKR/CNNBreastCancer.git
你可以在文件中查看项目:ImageLearningProject.ipynb,最新版本在分支:aubrey
问题:在“评估模型”部分可以看到模型的准确率有问题,因为随着时间的推移没有改善。为什么?如何解决这个问题?
如果需要其他信息,请告诉我。
更新:在接受了一些建议后,我进行了以下更新。
- 添加了批量归一化层和激活层。
- 将损失函数从…更改为二元交叉熵。因此,最后的密集层从softmax更改为sigmoid。
- 不再打印文件名,以使笔记本更加整洁。
结果:我们可以看到模型准确率图表发生了一些变化。但看起来仍然有些问题。我认为模型在每个epoch中应该表现得更好。
回答:
- 我的第一个建议是:你应该删除输出文件名的打印语句,这是不必要的,会弄乱你的笔记本输出空间
- 你的任务是一个二分类任务。标签要么是0(恶性)要么是1(良性),或者反过来,这无关紧要。然而,你使用了错误的损失函数——分类交叉熵,这是用于多类分类的。你应该使用二元交叉熵。https://www.tensorflow.org/api_docs/python/tf/keras/losses/BinaryCrossentropy
- 你可以尝试在每隔一层的CNN层后应用最大池化
- 批量归一化可能会有所帮助。在这种情况下,你应该移除CNN层的激活,在每次卷积后应用批量归一化,然后再添加一个激活层(例如ReLU)