检查目标时出错:预期的activation_2的形状为(512,),但数组的形状为(1,)

时间:2018-11-27 21:15:37

标签: python machine-learning keras neural-network deep-learning

遇到标题错误的麻烦。我确实知道我为什么会收到此错误,但是经过研究后,由于我是ML的新手,所以我很难理解这个概念。该错误与没有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 pooling
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Flatten())

#Add 512 unit layer
classifier.add(Dense(units = 512, activation = 'relu'))
 

1 个答案:

答案 0 :(得分:0)

问题出在最后一个Dense(512, ...)层与数据目标只是1维这一事实之间的差异。您可以通过将模型转换为输出预期尺寸来进行修复,也可以将数据调整为预期模型输出。这取决于您要实现的目标。要修复模型,您可以添加另一个Dense层:

classifier.add(Dense(units = 512, activation = 'relu'))
classifier.add(Dropout(0.2)) #prevent overfitting
classifier.add(Dense(units=1, activation='sigmoid')) # HERE ---

或者看看print(next(train_generator))输出的是什么生成器,以了解为什么目标数组是一维的。