python - ValueError:检查目标时出错:预期dense_3的形状为(1,),但数组的形状为(5,)
问题描述
如何修复此错误?我尝试访问所有论坛寻找解决此问题的答案。train_set 和 test_Set 中有 5 个类。
from keras.models import Sequential
from keras.preprocessing.image import ImageDataGenerator
from keras.layers import Convolution2D, MaxPooling2D, Flatten, Dense
classifier=Sequential()
#1st Convolution Layer
classifier.add(Convolution2D(32, 3, 3, input_shape=(64,64,3),activation="relu"))
#Pooling
classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Adding a second convolutional layer
classifier.add(Convolution2D(32, 3, 3, activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Flattening
classifier.add(Flatten())
classifier.add(Dense(output_dim = 128, activation = 'relu'))
classifier.add(Dense(output_dim = 64, activation = 'relu'))
classifier.add(Dense(output_dim = 1, activation = 'softmax'))
classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
print(classifier.summary())
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale = 1./255)
training_set= train_datagen.flow_from_directory('flowers/train_set',
target_size=(64,64),
batch_size=32,
class_mode='categorical')
test_set= test_datagen.flow_from_directory('flowers/test_set',
target_size=(64,64),
batch_size=32,
class_mode='categorical')
classifier.fit_generator(training_set,
samples_per_epoch = 3000,
nb_epoch = 25,
validation_data = test_set,
nb_val_samples=1000)
在这里,我附上了错误的图像以供审查。 错误
解决方案
在您的代码中,以下行是错误的
classifier.add(Dense(output_dim = 1, activation = 'softmax'))
将其更改为
classifier.add(Dense(output_dim = 5, activation = 'softmax'))
为什么?这是因为,您的最后一层是 5 维。我怎么知道输出维度是 5?因为,您使用categorical_crossentropy
了而且,看起来数据集的标签有 5 个类别(基于图像中输出的第一行)
推荐阅读
- java - 如何在基于 java 的 docker 镜像中安装包管理器
- java - Nifi ExecuteGroovyScript - 类已经加载到另一个类加载器中
- android - Exoplayer 与 Xamarin 的集成
- git - 如何在 Anaconda 3 上安装gym-minigrid(一般从 git 安装)?
- django - 调用在 Django App 中编写的 AWS Lambda 函数
- elasticsearch - 创建一个连接其他字段的关键字字段
- google-apps-script - Google Apps 脚本 - 更改授权帐户
- php - 如何从具有多个名称相似的条目的数组中获取正确的条目-PHP
- r - R中的并行功能
- google-chrome - 在 Chrome Android 浏览器上使用 Web Speech API 进行语音识别