首页 > 解决方案 > ValueError:在我的 CNN 中设置一个带有序列的数组元素

问题描述

我正在为自己的数据集构建一个用于人脸识别的 CNN 架构。首先这是我的代码:

classifier = keras.Sequential()
classifier.add(keras.layers.Convolution2D(16,kernel_size=(3,3),input_shape = (256,256,3),activation = swish,padding='same',kernel_regularizer=regularizers.l2))
classifier.add(keras.layers.Convolution2D(16,kernel_size=(3, 3),activation = swish,kernel_regularizer=regularizers.l2))
classifier.add(keras.layers.MaxPooling2D(pool_size = (2, 2),strides=2))
classifier.add(keras.layers.Dropout(0.2))
classifier.add(keras.layers.Convolution2D(32,kernel_size=(3, 3),activation = swish,kernel_regularizer=regularizers.l2))
classifier.add(keras.layers.Convolution2D(32,kernel_size=(3, 3),activation = swish,kernel_regularizer=regularizers.l2))
classifier.add(keras.layers.MaxPooling2D(pool_size = (2, 2),strides=2))
classifier.add(keras.layers.Dropout(0.3))
classifier.add(keras.layers.Convolution2D(64,kernel_size=(3, 3),activation = swish,kernel_regularizer=regularizers.l2))
classifier.add(keras.layers.Convolution2D(64,kernel_size=(3, 3),activation = swish,kernel_regularizer=regularizers.l2))
classifier.add(keras.layers.MaxPooling2D(pool_size = (2, 2),strides=2))
classifier.add(keras.layers.Dropout(0.4))
classifier.add(keras.layers.Flatten())
#classifier.add(keras.layers.Dropout(0.5))
classifier.add(keras.layers.Dense(128,activation = swish))
classifier.add(keras.layers.Dropout(0.5))
classifier.add(keras.layers.Dense( 4, activation = 'softmax'))
print(classifier.summary())
# Compiling the CNN
classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])

错误即将出现:

classifier.add(keras.layers.Convolution2D(16,kernel_size=(3,3),input_shape = (256,256,3),activation = swish,padding='same',kernel_regularizer=regularizers.l2))

我使用以下代码运行该文件:

import keras
import matplotlib.pyplot as plt
from numpy import set_printoptions
from keras import callbacks,regularizers,Sequential
from keras.layers import Input, Lambda, Dense, Flatten,Dropout,Input,Conv2D, MaxPool2D,BatchNormalization
from keras.callbacks import EarlyStopping
set_printoptions(precision=4,suppress=True)

当我添加 L2 正则化器时,错误开始出现,在此之前它工作正常。

`

标签: pythonmachine-learningdeep-learningcomputer-visionface-recognition

解决方案


以这种方式尝试:

classifier.add(keras.layers.Convolution2D(16,kernel_size=(3,3),input_shape = (256,256,3),activation = swish,padding='same', kernel_regularizer=regularizers.l2(0.01)))

推荐阅读