Python ValueError:检查目标时出错:预期激活_6具有形状(70),但获得具有形状(71)的数组
我正在使用CNN创建人脸识别。我在学习一个教程。我使用的是Tensorflow==1.15 该程序将拍摄70张用户的面部照片,并将其保存在“数据集”文件夹中 我不断得到错误: ValueError:检查目标时出错:预期激活_6具有形状(70),但获得具有形状(71)的数组 输入形状-(32,32,1) 班级(n_班级)-70 输出Python ValueError:检查目标时出错:预期激活_6具有形状(70),但获得具有形状(71)的数组,python,tensorflow,deep-learning,conv-neural-network,face-recognition,Python,Tensorflow,Deep Learning,Conv Neural Network,Face Recognition,我正在使用CNN创建人脸识别。我在学习一个教程。我使用的是Tensorflow==1.15 该程序将拍摄70张用户的面部照片,并将其保存在“数据集”文件夹中 我不断得到错误: ValueError:检查目标时出错:预期激活_6具有形状(70),但获得具有形状(71)的数组 输入形状-(32,32,1) 班级(n_班级)-70 输出 Model: "sequential_1" _____________________________________________
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_1 (Conv2D) (None, 30, 30, 32) 320
_________________________________________________________________
activation_1 (Activation) (None, 30, 30, 32) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 28, 28, 64) 18496
_________________________________________________________________
batch_normalization_1 (Batch (None, 28, 28, 64) 256
_________________________________________________________________
activation_2 (Activation) (None, 28, 28, 64) 0
_________________________________________________________________
conv2d_3 (Conv2D) (None, 28, 28, 64) 4160
_________________________________________________________________
dropout_1 (Dropout) (None, 28, 28, 64) 0
_________________________________________________________________
batch_normalization_2 (Batch (None, 28, 28, 64) 256
_________________________________________________________________
activation_3 (Activation) (None, 28, 28, 64) 0
_________________________________________________________________
conv2d_4 (Conv2D) (None, 26, 26, 128) 73856
_________________________________________________________________
dropout_2 (Dropout) (None, 26, 26, 128) 0
_________________________________________________________________
activation_4 (Activation) (None, 26, 26, 128) 0
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 13, 13, 128) 0
_________________________________________________________________
conv2d_5 (Conv2D) (None, 13, 13, 64) 8256
_________________________________________________________________
activation_5 (Activation) (None, 13, 13, 64) 0
_________________________________________________________________
flatten_1 (Flatten) (None, 10816) 0
_________________________________________________________________
dense_1 (Dense) (None, 32) 346144
_________________________________________________________________
dense_2 (Dense) (None, 70) 2310
_________________________________________________________________
activation_6 (Activation) (None, 70) 0
=================================================================
Total params: 454,054
Trainable params: 453,798
Non-trainable params: 256
_________________________________________________________________
Shape of Data: (70, 32, 32, 1)
Number of unique faces : 70
我正在计算x_列,x_测试,y_列,y_测试,如下所示
x_train, x_test, y_train, y_test = train_test_split(faces,ids, test_size = 0.2, random_state = 0)
输出
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_1 (Conv2D) (None, 30, 30, 32) 320
_________________________________________________________________
activation_1 (Activation) (None, 30, 30, 32) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 28, 28, 64) 18496
_________________________________________________________________
batch_normalization_1 (Batch (None, 28, 28, 64) 256
_________________________________________________________________
activation_2 (Activation) (None, 28, 28, 64) 0
_________________________________________________________________
conv2d_3 (Conv2D) (None, 28, 28, 64) 4160
_________________________________________________________________
dropout_1 (Dropout) (None, 28, 28, 64) 0
_________________________________________________________________
batch_normalization_2 (Batch (None, 28, 28, 64) 256
_________________________________________________________________
activation_3 (Activation) (None, 28, 28, 64) 0
_________________________________________________________________
conv2d_4 (Conv2D) (None, 26, 26, 128) 73856
_________________________________________________________________
dropout_2 (Dropout) (None, 26, 26, 128) 0
_________________________________________________________________
activation_4 (Activation) (None, 26, 26, 128) 0
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 13, 13, 128) 0
_________________________________________________________________
conv2d_5 (Conv2D) (None, 13, 13, 64) 8256
_________________________________________________________________
activation_5 (Activation) (None, 13, 13, 64) 0
_________________________________________________________________
flatten_1 (Flatten) (None, 10816) 0
_________________________________________________________________
dense_1 (Dense) (None, 32) 346144
_________________________________________________________________
dense_2 (Dense) (None, 70) 2310
_________________________________________________________________
activation_6 (Activation) (None, 70) 0
=================================================================
Total params: 454,054
Trainable params: 453,798
Non-trainable params: 256
_________________________________________________________________
Shape of Data: (70, 32, 32, 1)
Number of unique faces : 70
x_列车-(56,32,32,1)
y_列车-(56、71)
x_测试-(14,32,32,1)
y_试验-(14,71)
CNN层的尺寸有什么问题?
请帮助在您的model.summary()输出中,您可以看到最终的致密层具有形状(无,70)。None代表当前未知的批次大小。70然后是每个图像的输出维度
从您的y_train和y_pred中,似乎您想要输出71个类,而不是70个,因此维度不匹配。您可以尝试将最后一个密集层更改为
model.add(Dense(num_classes+1))
这应该行得通。我不知道为什么y值的长度与类数不同。一个原因可能是,有一个类表示“nothing”,因此在其他类中不应选择的类是正确的。这可以解释为什么如果有70个类,就需要71维的输出
model.add(Dense(num_classes+1))