Comment la normalisation des données de travail dans keras pendant la prédiction?
Je vois que le imageDataGenerator me permet de spécifier différents styles de normalisation des données, par exemple featurewise_center, samplewise_center, etc.
Je le voir dans les exemples que si je spécifiez l'une des options suivantes, puis-je appeler à l'ajustement de la méthode sur le générateur, afin de permettre au générateur de calculer des statistiques comme la moyenne de l'image sur le générateur.
(X_train, y_train), (X_test, y_test) = cifar10.load_data()
Y_train = np_utils.to_categorical(y_train, nb_classes)
Y_test = np_utils.to_categorical(y_test, nb_classes)
datagen = ImageDataGenerator(
featurewise_center=True,
featurewise_std_normalization=True,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)
# compute quantities required for featurewise normalization
# (std, mean, and principal components if ZCA whitening is applied)
datagen.fit(X_train)
# fits the model on batches with real-time data augmentation:
model.fit_generator(datagen.flow(X_train, Y_train, batch_size=32),
samples_per_epoch=len(X_train), nb_epoch=nb_epoch)
Ma question est, comment prédiction de travail si j'ai spécifié la normalisation des données au cours de la formation? Je ne vois pas comment, dans le cadre, je dirais même de passer de la connaissance de l'ensemble de la formation moyenne/std déviation le long de prédire, pour me permettre de normaliser mes données de test moi-même, mais je ne vois pas dans la formation de code où cette information est stockée.
Sont à l'image des statistiques nécessaires pour la normalisation stockées dans le modèle de sorte qu'ils peuvent être utilisés pendant la prédiction?
OriginalL'auteur Alex Taylor | 2017-01-25
Vous devez vous connecter pour publier un commentaire.
Oui - c'est vraiment un énorme inconvénient de
Keras.ImageDataGenerator
que vous ne pouvait pas fournir à la direction de la standarisation des statistiques sur votre propre. Mais - il y a une méthode facile sur la façon de surmonter ce problème.En supposant que vous avez une fonction
normalize(x)
qui est de normaliser une image lot (rappelez-vous que le générateur n'est pas de fournir une image simple, mais un tableau d'images - un lot la forme de la(nr_of_examples_in_batch, image_dims ..)
vous pourriez faire votre propre générateur avec la normalisation à l'aide de:Alors vous pouvez tout simplement utiliser
gen_with_norm(datagen.flow, normalize)
au lieu dedatagen.flow
.En outre, vous pouvez récupérer le
mean
etstd
calculée par unefit
méthode par l'obtention par les champs appropriés de datagen (par exempledatagen.mean
etdatagen.std
).OriginalL'auteur Marcin Możejko
Utiliser le
standardize
méthode du générateur pour chaque élément. Voici un exemple complet de l'ICRA 10:Ne pas le diviser par 255 permettre la normalisation?. Considérant les données d'entrée les valeurs des pixels varie de 0 à 255.
OriginalL'auteur Martin Thoma
Je suis en utilisant le
datagen.fit
fonction elle-même.Idéalement avec cela,
test_datagen
monté sur la formation dataset apprendrez les ensembles de données de formation statistique. Puis il va utiliser ces statistiques pour normaliser les données de test.OriginalL'auteur Hari
J'ai aussi eu le même problème et je l'ai résolu en utilisant la même fonctionnalité que le
ImageDataGenerator
utilisé:Noter que ceci n'est possible que si vous avez un délai raisonnable petit jeu de données, comme l'ICRA-10. Sinon, le solution proposée par Marcin sonne bien plus raisonnable.
OriginalL'auteur Alexander Pacha