Python Tensorflow-模型仅预测6类中的2类
我正在建立一个CNN,用50x50像素的灰度图像对6个类别进行分类(每类1400张)。。在训练模型并评估损失和准确度后,一切似乎都很正常,训练准确度约为98%,损失降至3.0,但在根据每个类的测试数据评估模型时,模型已经偏离了方向。我的课程是面部表情图像: 1) 愤怒 2) 恐惧 3) 高兴的 4) 中立的 5) 悲哀的 6) 惊奇 这是Jupyter笔记本: 例如,当我为每一类输入350张测试图像时,只有愤怒和惊喜类被预测到Python Tensorflow-模型仅预测6类中的2类,python,tensorflow,machine-learning,neural-network,conv-neural-network,Python,Tensorflow,Machine Learning,Neural Network,Conv Neural Network,我正在建立一个CNN,用50x50像素的灰度图像对6个类别进行分类(每类1400张)。。在训练模型并评估损失和准确度后,一切似乎都很正常,训练准确度约为98%,损失降至3.0,但在根据每个类的测试数据评估模型时,模型已经偏离了方向。我的课程是面部表情图像: 1) 愤怒 2) 恐惧 3) 高兴的 4) 中立的 5) 悲哀的 6) 惊奇 这是Jupyter笔记本: 例如,当我为每一类输入350张测试图像时,只有愤怒和惊喜类被预测到 TEST IMAGES
TEST IMAGES RESULTS
Angry - it classified 76 angry, and 273 surprise
Fear - it classified 8 angry and 342 surprise
Happy - 12 angry and 338 surprise
Neutral - 350 surprise
Sad - 22 angry and 328 surprise
Surprise - a full 350/350 classified for this one..
很明显,人们对愤怒和惊讶有一定的偏见,因为没有一张图片被分类过
当我运行acc.eval({x:test\u images,y:test\u labels,is\u training:False})
(每个类对应2100个图像)在训练后,我得到了82%的准确率,所以我不知道这是怎么发生的。模型是否可能一直在这两门课上训练
@注:图像和标签是一个热编码,也随机洗牌,批量标准化实施
更新
我重新训练了这个模型,它有着相同的影响,但课程不同。这一次,它喜欢悲伤和惊讶,而不是愤怒和惊讶。 结果如下:
Angry - Sad 259 and surprise 75
Fear - Sad 118 and surprise 218 (some classifications missing here for some reason)
Happy - Sad 167 times and suprise 160 times (same again, missing some classifications)
Neutral - sad 94 and surprise 249
Sad - sad 211 and surprise 122
Surprise - Sad 284 and surprise 52
代码中有一些东西,但最重要的是,由于某种原因,当
is\u training=False
时,它不起作用。如果设置is_training=True
,即使未进行培训,也会给出可接受的结果。所以培训是可以的,但是评估不是很好
我现在无法回答这个问题,但可能值得调查
在Jupyter笔记本中附加固定代码。我已经改变了很多小事情,比如你取了已经设置为最大值的最大值,修正了这个问题,改变了随机洗牌以使用numpy,改变了加载测试图像以在加载后立即调整大小,等等。还有很多调试打印正在进行,对此表示抱歉。:)
看起来合理,验证准确率为88%(培训准确率为96.59%)。(也改为10个时代。)
看起来您的标签上的单元格[5]有相同的热编码。。。这是真的吗?是的,它们是一个热编码的,但这只是它们看起来几乎相同的机会,我检查了标签[0:100],标签被正确地洗牌了