我正在使用Daniel Persson在Youtube上列出的代码。他的代码位于github。
我正在为他的分类项目使用他的代码,我的准确率大约为88%(我使用的是GPU)。通过InceptionV3和RasNEt50转移学习,我获得了大约93%的收益。我是ML的新手,我设法使用Keras建立了基本的训练模型。我正在使用3类(120x120 pxl RGB图像)。在上面的代码中,我找不到如何将交叉熵更改为分类交叉熵。
还有哪些其他方法可以提高准确性水平?我觉得输出应该会更好,因为图像差异对于人类来说是微不足道的。
我还想知道如何使用sklearn套件在此处绘制混淆矩阵。
谢谢。
答案 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()
希望这会有所帮助。