Je souhaite former un réseau profond en commençant par la couche suivante:
model = Sequential()
model.add(Conv2D(32, 3, 3, input_shape=(32, 32, 3)))
en utilisant
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()
avec le générateur suivant:
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)
(le générateur de validation est similaire).
Pendant la formation, j'obtiens l'erreur:
Error when checking model input: expected convolution2d_input_1 to have 4
dimensions, but got array with shape (32, 32, 3)
Comment est-ce possible, avec une première couche
model.add(Conv2D(32, 3, 3, input_shape=(32, 32, 3)))
?
Vous devez simplement appliquer la transformation suivante à votre tableau de données d'entrée.
input_data = input_data.reshape((-1, image_side1, image_side2, channels))
cela dépend de la façon dont vous commandez réellement vos données, si c'est sur un canal d'abord, vous devez remodeler vos données: x_train = x_train.reshape (x_train.shape [0], canal, largeur, hauteur)
si son canal est le dernier: x_train = s_train.reshape (x_train.shape [0], largeur, hauteur, canal)