ValueError: установка элемента массива с последовательностью, идущей в моем CNN - PullRequest
0 голосов
/ 14 марта 2020

Я строю архитектуру 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, до этого он работал нормально.

`

1 Ответ

0 голосов
/ 14 марта 2020

Попробуйте следующим образом:

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)))
...