Python - Tensorflow 关于卷积神经网络的建议

时间:2021-04-17 19:50:07

标签: python tensorflow machine-learning keras neural-network

项目: 借助卷积神经网络确定乳房 X 光片中是否含有良性或恶性肿瘤。

这是github存储库链接https://github.com/aubreyDKR/CNNBreastCancer.git

您可以在文件上看到项目:ImageLearningProject.ipynb 最新版本位于分支:aubrey

问题: 我们可以在“Evaluate Model”部分看到模型精度有问题,因为它没有随着时间的推移而提高。为什么 ?如何解决这个问题?

如果需要其他信息。告诉我。


更新: 经过一些建议,我进行了下一次更新。

  1. 添加批量归一化层和激活层。
  2. 将损失函数从 . . .到二元交叉熵。所以最后一个dense layer从softmax变成了sigmoid。
  3. 不再打印文件名以使笔记本更干净。

结果: 我们可以看到模型精度图的一些变化。但总觉得哪里不对劲。我认为模型应该在每个时期都更好。

1 个答案:

答案 0 :(得分:1)

  1. 我的第一个建议是:您应该删除输出文件名的打印语句,它是不必要的并且会弄乱您的笔记本输出空间:)
  2. 您的任务是二元分类任务。标签是 0(恶性)或 1(良性)或相反,都没有关系。但是,您使用了错误的损失函数分类交叉熵,它用于多类分类。您应该使用 BinaryCrossEntropy。 https://www.tensorflow.org/api_docs/python/tf/keras/losses/BinaryCrossentropy
  3. 您可以尝试每隔 CNN 层应用一次最大池化
  4. 批量标准化可能会有所帮助。在这种情况下,您应该删除 cnn 层中的激活,并且在每次卷积之后您可以应用批量归一化,然后您应该有一个激活层(例如 ReLU)