标题中的错误让我感到困扰。虽然我知道为什么会出现这个错误,但在研究后,由于我是机器学习的新手,我难以理解这个概念。错误与没有X_TRAIN和Y_TRAIN有关,但我无法理解它们包含什么内容。所有图像都已调整到相同尺寸。我使用的是CUB 2011数据集,训练/验证的分割比例为90:10,下面是我与错误相关的代码。我使用的是Keras。
classifier.add(Conv2D(256, (3, 3), input_shape = (467,386,3)))classifier.add(Activation('relu'))#Smaller for precise poolingclassifier.add(MaxPooling2D(pool_size = (2, 2)))classifier.add(Flatten())#Add 512 unit layerclassifier.add(Dense(units = 512, activation = 'relu'))
回答:
问题在于您的最终Dense(512, ...)
层与您的数据目标只有一维之间存在差异。您可以选择通过调整模型输出期望的维度来解决问题,或者调整数据以符合模型的预期输出。这取决于您想要达到的目标。要修复模型,您可以添加另一个Dense
层:
classifier.add(Dense(units = 512, activation = 'relu'))classifier.add(Dropout(0.2)) #防止过拟合classifier.add(Dense(units=1, activation='sigmoid')) # 在这里 ---
或者,您可以通过print(next(train_generator))
查看生成器的输出,了解为什么目标数组是一维的。