Je ne peux pas pour la vie de comprendre comment changer l'ordre des images. les images sont lues au format (x, x, 3), mais elles doivent également être au format (3, x, x). J'ai essayé de changer l'ordre avec numpy.array([img[:,:,i] for i in range(3)])
je suppose que le travail est fait, mais c’est moche et je ne vois pas comment l’inverser pour récupérer l’image d’origine.
Vous pouvez utiliser numpy.rollaxis pour faire rouler l’axe 3 en position 1 (si vous avez la taille du lot en tant que dimension 0).
np.rollaxis(imagesArray, 3, 1)
Toutefois, si vous utilisez des keras, vous pouvez modifier sa configuration ou la définir par couche. Theano n’exige rien de votre part si vous utilisez Keras.
Les keras peuvent être configurés avec les canaux en premier ou en dernier, ce qui vous permet également de le définir dans chaque couche afin que vous n'ayez pas à modifier vos données.
Trouvez le keras.json
fichier et le changer. Le fichier est généralement installé dans C:\Users\yourusername\.keras
ou ~/.keras
selon votre système d'exploitation.
Changement "image_data_format": "channels_last"
à "channels_first"
ou vice-versa, comme vous le souhaitez.
Habituellement, travailler avec "channels_last" est moins gênant en raison du grand nombre d’autres fonctions (non convolutives) qui ne fonctionnent que sur le dernier axe.
Le documentation de Keras contient toutes les informations sur les paramètres des couches, y compris le data_format
paramètre.
Je suis d’accord avec le commentaire de @Qualia, np.moveaxis (a, source, destination) est plus facile à comprendre. Cela fait le travail:
x = np.zeros((12, 12, 3))
x.shape
#yields:
(12, 12, 3)
x = np.moveaxis(x, -1, 0)
x.shape
#yields:
(3, 12, 12)
x = np.zeros((12, 12, 3))
y = np.rollaxis(x, 2, 0)
y.shape
(3, 12, 12)