Python 验证准确度为';t改变

Python 验证准确度为';t改变,python,machine-learning,keras,scikit-learn,deep-learning,Python,Machine Learning,Keras,Scikit Learn,Deep Learning,我训练了我的第一个分类图像分类器,但由于我对深度学习还不熟悉,我没有注意到我的验证集发生了什么。我做了一个5倍的CV,在每一倍中,我将数据集分割成训练/验证/测试 拆分后,我在x_列车中应用数据扩充: datagen = ImageDataGenerator( rotation_range=90, horizontal_flip=True) 然后将我的模型与发电机匹配: history = model.fit_generator(datagen.flow(x_trai

我训练了我的第一个分类图像分类器,但由于我对深度学习还不熟悉,我没有注意到我的验证集发生了什么。我做了一个5倍的CV,在每一倍中,我将数据集分割成训练/验证/测试

拆分后,我在x_列车中应用数据扩充:

datagen = ImageDataGenerator(
    rotation_range=90,
    horizontal_flip=True)

然后将我的模型与发电机匹配:

    history = model.fit_generator(datagen.flow(x_train, y_train, batch_size=25),
                                  validation_data=(x_validation,y_validation), 
                                  steps_per_epoch=math.ceil(len(x_train) / batch),
                                  epochs=epochs)

参数:
len(x_train)=31
batch=1
原因我想要sgd批次

数据集有76个图像,分别写入测试=15、序列=31和验证=30

在运行了5次之后,我看到了这个图形:

发生了什么事


提前谢谢

您好,您能提供您的网络架构吗?乍一看,你的模型似乎不太合适。这就是为什么您有高列车acc和低val acc。这可能有许多原因(例如,培训数据数量少)。为了帮助我们,我们可能需要更多的输入,比如你想要预测什么或者网络的架构是什么样子。这就是我的网络架构:我使用Resnet50,使用imagenet权重微调所有层,然后移除最后一层,创建一个新的层,将其分为3类。我在数据集中有76张图像,分为三类。数据集是不平衡的,因为第一类有52%的数据,其他类有28%的数据,其他类有20%的数据。首先,我建议您尝试获取更多数据。您使用76数据集中的31个数据点作为列车数据。这是一个非常少的训练数据。此外,如果您的数据集是不平衡的,您可能有trainingsdata,它缺少一个类(我们需要加载数据的代码)。如果更多的数据不起作用,并且你解释了类的不平衡(例如,过度/欠采样或加权),我建议共享更多的代码和一些样本数据,这样我们就可以重现错误。谢谢Fabian,我现在正在尝试数据扩充,但它似乎没有得到很好的实现,所以我正在研究它是如何工作的。嗨,你能提供你的网络架构吗?乍一看,你的模型似乎不太合适。这就是为什么您有高列车acc和低val acc。这可能有许多原因(例如,培训数据数量少)。为了帮助我们,我们可能需要更多的输入,比如你想要预测什么或者网络的架构是什么样子。这就是我的网络架构:我使用Resnet50,使用imagenet权重微调所有层,然后移除最后一层,创建一个新的层,将其分为3类。我在数据集中有76张图像,分为三类。数据集是不平衡的,因为第一类有52%的数据,其他类有28%的数据,其他类有20%的数据。首先,我建议您尝试获取更多数据。您使用76数据集中的31个数据点作为列车数据。这是一个非常少的训练数据。此外,如果您的数据集是不平衡的,您可能有trainingsdata,它缺少一个类(我们需要加载数据的代码)。如果更多的数据不起作用,并且你解释了类的不平衡(例如,过度/欠采样或加权),我建议共享更多的代码和一些样本数据,这样我们就可以重现错误。谢谢Fabian,我现在正在尝试数据增广,但它似乎没有得到很好的实现,所以我正在研究它是如何工作的。