1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
#train prépare les données, fait de l'augmentation des données avec des flips à l'aide des méthodes ImageDataGenerator, réalise du transfert learning, entraîne le CNN, réalise du fine tuning, sauve le modèle au format.h5 ...
def train(train_dir, val_dir, output_model_file, nb_epoch, batch_size, verbose=True):
...
base_model = VGG16(include_top=False, weights='imagenet')
model = add_new_last_layer(base_model, nb_classes)
...
model.fit_generator( ... paramètres propres à fit generator ...)
...
model.fit_generator(
train_generator,
steps_per_epoch=nb_train_samples / batch_size,
epochs=nb_epoch,
callbacks=[checkpointer],
validation_data=validation_generator,
validation_steps=nb_val_samples / batch_size,
class_weight='auto'
)
# ... et retourne le modèle sous la variable : "trained_model0"
if verbose: print("Saving model...")
model.save(output_model_file)
trained_model0 = model
return trained_model0
#ensuite train est elle même appelée par training
def training(path_to_dataset, output_model_file="weights/weights.h5", nb_epoch=NB_EPOCHS, batch_size=BAT_SIZE):
....
# traitement des répertoires train et valid
...
trained_model1 = train(train_dir, val_dir, output_model_file, nb_epoch, batch_size)
print("Le Summary de trained_model1 : ")
trained_model1.summary()
return trained_model1
#Ensuite c'est le code que j'ai renseigné dans la description de mon problème. |
Partager