Python tensorflow训练一直效果不佳,只需几百步,损失很快降到0,准确率达到100%,已经困扰我好几个月了

Python tensorflow训练一直效果不佳,只需几百步,损失很快降到0,准确率达到100%,已经困扰我好几个月了,python,tensorflow,deep-learning,conv-neural-network,Python,Tensorflow,Deep Learning,Conv Neural Network,我正在尝试使用tensorflow进行图像分类。总共有5个类别,每个类别大约有300幅图像 但在培训过程中,仅仅几百步,我就遇到了一些问题: 1,损失降为0,精度达到100% 2.添加验证集后(不知道添加的代码是否正确),验证集的丢失仍然减少到0,验证集的准确率仍然达到100%或90+%。 3.当使用测试代码进行测试时,结果非常糟糕,几乎无法识别正确性,但测试的最大概率为90+% 这是我的github代码地址: 通过tf.summary.image代码,您可以看到每100个步骤,输入的图像都是

我正在尝试使用tensorflow进行图像分类。总共有5个类别,每个类别大约有300幅图像

但在培训过程中,仅仅几百步,我就遇到了一些问题: 1,损失降为0,精度达到100% 2.添加验证集后(不知道添加的代码是否正确),验证集的丢失仍然减少到0,验证集的准确率仍然达到100%或90+%。 3.当使用测试代码进行测试时,结果非常糟糕,几乎无法识别正确性,但测试的最大概率为90+%

这是我的github代码地址:

  • 通过tf.summary.image代码,您可以看到每100个步骤,输入的图像都是不同的,因此是否存在输入错误问题
  • 代码培训是否正确?错误在哪里
  • 损失和精度的计算代码是否错误
  • 数据集有多少

  • 为了社区的利益,在此提及解决方案

    如果我们
    标准化数据
    ,即通过将每个像素值除以
    255
    ,问题就会得到解决

    通过除以
    255
    0-255
    范围可以用
    0.0-1.0
    范围来描述,其中
    0.0
    表示
    0(0x00)
    1.0
    表示
    255(0xFF)

    标准化将帮助您消除图像中灯光和阴影造成的扭曲

    标准化的示例代码如下所示:

    (X_train, y_train), (X_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()
    X_train = X_train.astype(np.float32).reshape(-1, 28*28) / 255.0
    X_train_reshaped = tf.reshape(X_train, shape=[-1, 28, 28, 1])
    X_test = X_test.astype(np.float32).reshape(-1, 28*28) / 255.0
    X_test_reshaped = tf.reshape(X_test, shape=[-1, 28, 28, 1])
    

    您可能需要首先关注一个问题领域。就目前而言,这个问题过于宽泛,提出了多个问题。用1500张图片训练5个类别似乎太小了。与Cifar 10相比,Cifar 10有60000张图像和10个类别,这似乎相差了几个数量级。您可以使用预先训练的模型和转移学习,样本量很小。非常感谢您的回答,我将尝试增加数据集,但我最不理解的是,训练似乎无效,但损失可能达到0,准确率可能达到100%。您似乎太过合适了。你的模型实际上不是100%准确,但它说它是在训练数据上。是的,它在训练集和验证集上都过拟合,但我找不到原因。现在,我知道是什么导致了这种现象,因为没有使用标准化。但为什么不清楚它是否正常化?