python - 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 正则化器时,错误开始出现,在此之前它工作正常。
`
解决方案
以这种方式尝试:
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)))
推荐阅读
- c - 在一个简单的 32 位内核中混合 C 和汇编代码
- laravel - laravel - 如何设置与 hasManyThrough 的关系?
- python - 列表中最大的偶数
- laravel - 按最高hasmany排序
- javascript - 如何在 JavaScript 中使用 appendChild() 将一个 div 容器附加到另一个 div 容器?
- c# - 如何用捏缩放游戏对象?
- php - 最大功能不显示多于一条记录Mysql
- c++ - C++ 多线程程序因 BUS 错误而崩溃
- mapbox-gl-js - 在 MapboxGL 上显示的 mvt 矢量图块
- html - 在引导列中定位元素