Je crée manuellement mon jeu de données à partir d'un certain nombre d'images 384x286 noir et blanc.Keras input_shape pour les images conv2d et chargées manuellement
je charger une image comme ceci:
x = []
for f in files:
img = Image.open(f)
img.load()
data = np.asarray(img, dtype="int32")
x.append(data)
x = np.array(x)
il en résulte x étant un tableau (num_samples, 286, 384)
print(x.shape) => (100, 286, 384)
lire la documentation keras et vérifier mon back-end, i devrait fournir à l'étape de convolution un input_shape composé par (lignes, cols, canaux)
puisque je ne connais pas arbitrairement la taille de l'échantillon, je m'attendais à passer en entrée si ze, quelque chose de similaire à
(None, 286, 384, 1)
le modèle est construit comme suit:
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
# other steps...
passant comme input_shape (286, 384, 1) provoque:
Erreur lors du contrôle d'entrée: prévu conv2d_1_input pour avoir 4 dimensions, mais le tableau a la forme (85, 286, 384)
passant as_input_shape (None, 286, 384, 1) provoque:
entrée 0 est incompatible avec la couche conv2d_1: attendu ndim = 4, trouvé ndim = 5
ce que je fais mal? comment est-ce que je dois remodeler le tableau d'entrée?
merci, j'ai raté la partie remodeler. En termes simples, pour toute personne suivant cette discussion dans le futur, lors de la représentation des données, les valeurs de pixels doivent être un tableau 1-éléments, par exemple une seule ligne de pixels au lieu d'être comme [100,101,140, ...] être [[100], [101], [140], ...] – Stormsson