简体   繁体   English

ValuError:检查目标时出错:预期activation_6具有形状(70,)但得到形状为(71,)的数组

[英]ValuError: Error when checking target: expected activation_6 to have shape (70,) but got array with shape (71,)

I am creating face recognition using CNN.我正在使用 CNN 创建人脸识别。 I was following a tutorial.我正在关注一个教程。 I am using Tensorflow==1.15.我正在使用 Tensorflow==1.15。

The programme will take 70 snaps of the user's face and save them in the folder 'dataset'该程序将拍摄用户面部的 70 张快照并将其保存在“数据集”文件夹中

I keep getting the error:我不断收到错误:

ValueError: Error when checking target: expected activation_6 to have shape (70,) but got array with shape (71,) ValueError:检查目标时出错:预期activation_6 的形状为(70,)但得到的数组形状为(71,)

input shapes - (32,32,1)输入形状 - (32,32,1)

classes(n_classes) - 70类(n_classes) - 70


K.clear_session()
n_faces = len(set(ids))

model = model((32,32,1),n_faces) #Calling Model given in next code block
faces = np.asarray(faces)
faces = np.array([downsample_image(ab) for ab in faces])
ids = np.asarray(ids)
faces = faces[:,:,:,np.newaxis]
print("Shape of Data: " + str(faces.shape))
print("Number of unique faces : " + str(n_faces))


ids = to_categorical(ids)

faces = faces.astype('float32')
faces /= 255.


x_train, x_test, y_train, y_test = train_test_split(faces,ids, test_size = 0.2, random_state = 0)

print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)

checkpoint = callbacks.ModelCheckpoint('trained_model.h5', monitor='val_acc',
                                           save_best_only=True, save_weights_only=True, verbose=1)
                                    
model.fit(x_train, y_train,
             batch_size=32,
             epochs=10,
             validation_data=(x_test, y_test),
             shuffle=True,callbacks=[checkpoint])


def model(input_shape,num_classes):    

    model = Sequential()

    model.add(Conv2D(32, (3, 3), input_shape=input_shape))
    model.add(Activation("relu"))

    model.add(Conv2D(64, (3, 3)))
    model.add(BatchNormalization())
    model.add(Activation("relu"))

    model.add(Conv2D(64, (1, 1)))
    model.add(Dropout(0.5))
    model.add(BatchNormalization())
    model.add(Activation("relu"))

    model.add(Conv2D(128, (3, 3)))
    model.add(Dropout(0.5))
    model.add(Activation("relu"))

    model.add(MaxPooling2D(pool_size=(2,2)))

    model.add(Conv2D(64, (1, 1)))
    model.add(Activation("relu"))

    model.add(Flatten())
    model.add(Dense(32))
    model.add(Dense(num_classes))
    model.add(Activation("softmax"))
    
    model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])

    model.summary()
    return model

Output Output







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

I am calculating x_train, x_test, y_train, y_test as shown below我正在计算 x_train, x_test, y_train, y_test 如下图

x_train, x_test, y_train, y_test = train_test_split(faces,ids, test_size = 0.2, random_state = 0)

Output Output

x_train - (56, 32, 32, 1) x_train - (56, 32, 32, 1)

y_train - (56, 71) y_train - (56, 71)

x_test - (14, 32, 32, 1) x_test - (14, 32, 32, 1)

y_test - (14, 71) y_test - (14, 71)

What I am doing wrong with the dimensions of CNN layers?我对 CNN 层的尺寸做错了什么? Please Help请帮忙

ValueError: Error when checking target: expected activation_6 to have shape (70,) but got array with shape (71,)

You are feeding in 71 classes, but 70 are expected.您正在参加 71 个班级,但预计会有 70 个班级。

Either change num_classes to 71, or see why you are feeding in 71 classes to x_train , y_train instead of 70.要么将num_classes更改为 71,要么看看为什么将 71 个类输入x_trainy_train而不是 70。

Which is correct depends on your specific use case we can't know from the given question.哪个是正确的取决于您从给定问题中无法知道的具体用例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ValueError:检查目标时出错:预期 activation_6 具有形状(70,)但得到形状为(71,)的数组 - ValueError: Error when checking target: expected activation_6 to have shape (70,) but got array with shape (71,) 检查目标时出错:预期 activation_6 有 3 个维度,但得到了形状为 (70612, 1) 的数组 - Error when checking target: expected activation_6 to have 3 dimensions, but got array with shape (70612, 1) ValueError:检查目标时出错:预期激活具有形状 (1,) 但得到形状为 (2,) 的数组 - ValueError: Error when checking target: expected activation to have shape (1,) but got array with shape (2,) Keras-检查目标时出错:预期activation_5具有形状(2,),但数组的形状为(1,) - Keras - Error when checking target: expected activation_5 to have shape (2,) but got array with shape (1,) Keras - “ValueError:检查目标时出错:预期activation_1具有形状(无,9)但得到的数组具有形状(9,1) - Keras - "ValueError: Error when checking target: expected activation_1 to have shape (None, 9) but got array with shape (9,1) ValueError:检查目标时出错:预期 activation_9 具有形状 (74, 6) 但得到形状为 (75, 6) 的数组 - ValueError: Error when checking target: expected activation_9 to have shape (74, 6) but got array with shape (75, 6) ValueError:检查目标时出错:预期activation_1的形状为(158,),但数组的形状为(121,) - ValueError: Error when checking target: expected activation_1 to have shape (158,) but got array with shape (121,) 检查目标时出错:预期 activation_5 的形状为 (1,) 但得到的数组的形状为 (2,) - Error when checking target: expected activation_5 to have shape (1,) but got array with shape (2,) 检查目标时出错:预期的activation_1的形状为(1,),但数组的形状为(10,) - Error when checking target: expected activation_1 to have shape (1,) but got array with shape (10,) 检查目标时出错:预期的activation_2的形状为(512,),但数组的形状为(1,) - Error when checking target: expected activation_2 to have shape (512,) but got array with shape (1,)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM