deep-learning - example - keras wikipedia
Error al verificar la entrada del modelo: se esperaba que convolution2d_input_1 tuviera 4 dimensiones, pero se obtuvo una matriz con forma(32, 32, 3) (1)
Quiero entrenar una red profunda comenzando con la siguiente capa:
model = Sequential()
model.add(Conv2D(32, 3, 3, input_shape=(32, 32, 3)))
utilizando
history = model.fit_generator(get_training_data(),
samples_per_epoch=1, nb_epoch=1,nb_val_samples=5,
verbose=1,validation_data=get_validation_data()
Con el siguiente generador:
def get_training_data(self):
while 1:
for i in range(1,5):
image = self.X_train[i]
label = self.Y_train[i]
yield (image,label)
(El generador de validación se ve similar).
Durante el entrenamiento, me sale el error:
Error when checking model input: expected convolution2d_input_1 to have 4
dimensions, but got array with shape (32, 32, 3)
¿Cómo puede ser eso, con una primera capa?
model.add(Conv2D(32, 3, 3, input_shape=(32, 32, 3)))
?
La forma de entrada que ha definido es la forma de una sola muestra. El propio modelo espera una matriz de muestras como entrada (incluso si es una matriz de longitud 1).
Su salida realmente debería ser 4-d, con la primera dimensión para enumerar las muestras. es decir, para una sola imagen debe devolver una forma de (1, 32, 32, 3).
Puede encontrar más información here en "Convolution2D" / "Forma de entrada"