如何使用[github] [2]上的代码进一步提高CNN准确性?

时间:2019-07-04 20:28:50

标签: tensorflow

我正在使用Daniel Persson在Youtube上列出的代码。他的代码位于github

我正在为他的分类项目使用他的代码,我的准确率大约为88%(我使用的是GPU)。通过InceptionV3和RasNEt50转移学习,我获得了大约93%的收益。我是ML的新手,我设法使用Keras建立了基本的训练模型。我正在使用3类(120x120 pxl RGB图像)。在上面的代码中,我找不到如何将交叉熵更改为分类交叉熵。

还有哪些其他方法可以提高准确性水平?我觉得输出应该会更好,因为图像差异对于人类来说是微不足道的。

  1. 这会改善隐藏层的数量吗?
  2. 现有层中的许多节点?

我还想知道如何使用sklearn套件在此处绘制混淆矩阵。

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您的问题是我们大多数从事ML的人都在试图每天回答的问题,即如何改善模型的性能。为了简短起见,并尝试回答您的问题:

在上面的代码中,我找不到如何将交叉熵更改为分类交叉熵

尝试this link回答另一个问题,因为我认为您提供的代码已经计算出分类交叉熵。

这会改善隐藏层吗?现有层中有许多节点?

是,不是。阅读有关CNN改造的信息。更多的图层/节点可能最终会过度拟合您的数据,这将使您的训练准确性急剧上升,但会破坏验证准确性。您可以尝试的另一种方法是添加我倾向于使用的Dropout layers。您还可以阅读有关L1 and L2 regularization的信息。

使用深度学习时要想到的另一件事是,训练和验证损失曲线应看起来像可能的曲线。如果不是,那肯定是过度/不足的反映。

我还想知道如何使用sklearn工具包在此处绘制混淆矩阵。

尝试:

from sklearn.metrics import confusion_matrix

confusion_matrix(ground_truth_labels, predicted_labels)

并可视化:

import seaborn as sns
import matplotlib.pyplot as plt

sns.heatmap(annot=True, fmt="d",data=confusion_matrix(ground_truth_labels, predicted_labels),linewidths=1,cmap='Blues')
plt.xlabel('true')
plt.ylabel('predicted')
plt.show()

希望这会有所帮助。