Python TensorFlow图像分类模型的均方误差

Python TensorFlow图像分类模型的均方误差,python,tensorflow,machine-learning,computer-vision,Python,Tensorflow,Machine Learning,Computer Vision,我试图教图像分类模型从图像中定义一个数字特征。我确信稀疏分类交叉熵损失函数对我不起作用,至于训练,我需要惩罚大的差异,而不是小的差异。理想情况下,我想使用均方误差损失函数 我使用TensorFlow教程来准备模型- 类名对我来说是数字,我尝试了以下选项: [00',01',02',03',04',05',06',07',08',09',10',11',12'] ['0','1','2','3','4','5','6','7','8','9','10','11','12'] 我对教程所做的唯一

我试图教图像分类模型从图像中定义一个数字特征。我确信稀疏分类交叉熵损失函数对我不起作用,至于训练,我需要惩罚大的差异,而不是小的差异。理想情况下,我想使用均方误差损失函数

我使用TensorFlow教程来准备模型-

类名对我来说是数字,我尝试了以下选项:

  • [00',01',02',03',04',05',06',07',08',09',10',11',12']
  • ['0','1','2','3','4','5','6','7','8','9','10','11','12']
我对教程所做的唯一更改(数据集除外)是将SparseCategoricalCrossentropy损失函数交换为“均方误差”

但是损失函数显然不适合我。它返回的值会随着训练而变小,但准确率永远不会超过5%,甚至会随着损失值变小而下降。结果也没有意义。数据很好,使用SparseCategoric交叉熵损失函数很容易达到95%的准确率。我错过了什么


更新:我认为我真正需要的是一种在TensorFlow中使用数字标记的图像定义回归问题的方法。

结果表明,将图像分类问题转化为回归问题非常容易。针对上述教程,我必须进行以下更改:

  • 数字为“类”(文件夹名称)的不同数据集

  • 将损失函数更改为均方误差或其他适合回归的损失函数

  • 为模型制作最后一层,仅使用1个神经元,而不是类数(并且没有softmax):

  • 预测结果的解释发生变化:

     ...
     predictions = model.predict(img_array)
     # score = tf.nn.softmax(predictions[0])    # correct for classification, but not regression
     score = predictions.flatten()[0]    # correct result for regression
     ...
    

  • MSE不是分类损失。请看,我看到了。看来,我不需要分类损失。那我需要什么?可以在图像模型上使用回归损失吗?你说的“图像模型”是什么意思?损失是由你试图解决的问题类型来定义的;如果这是一个分类问题,您不能使用MSE或其他适合回归的损失。我认为我需要的是一种使用数字标记的图像在TensorFlow中定义回归问题的方法。这样,“9”和“2”之间的误差将大于“9”和“8”之间的误差。如果这是你想要的,听起来确实像是一个回归问题。但你开始提问的基本前提“我正在尝试教授图像分类模型”不再成立了,是吗?你是对的。如果我知道这件事,我就不会在这里问了,-我只是想弄清楚我自己,因为它更快。我不想更新这个问题,因为我认为它很清楚,我看到很多人在寻找一个类似问题的答案,但没有收到。我希望它能帮助别人。
     ...
     predictions = model.predict(img_array)
     # score = tf.nn.softmax(predictions[0])    # correct for classification, but not regression
     score = predictions.flatten()[0]    # correct result for regression
     ...