epochs=EPOCHS, steps_per_epoch=STEPS_PER_EPOCH, verbose=1, callbacks=[checkpoint, lr_scheduler, csv_logger]) ###################################### end version basic and balance ################################################### ####################################### run on test set ################################################################ ## only run for testing by adding parameter 'test' when running script elif modus == 'test': y_test_matrix = to_categorical(y_test, len(labeltonumber)) if worker == 'single': print(model.metrics_names) #model.load_weights(save_modeldirectory + '/Xception_genus_pad_version1.1/Xception.109.0.964.hdf5') model.load_weights(save_modeldirectory + '/{}'.format(weightfile)) accuracy = model.evaluate(x=X_test, y=y_test_matrix) ## get predicted labels for test set y_prob = model.predict(X_test) y_pred = y_prob.argmax(axis=-1) elif worker == 'parallel': print(parallel_model.metrics_names) parallel_model.load_weights(save_modeldirectory + '/{}'.format(weightfile)) accuracy = parallel_model.evaluate(x=X_test, y=y_test_matrix) ## get predicted labels for test set y_prob = parallel_model.predict(X_test) y_pred = y_prob.argmax(axis=-1) print('loss: {}, accuracy: {}'.format(accuracy[0], accuracy[1])) ## get precision, recall, f1-score and support for each class predicted on test set classreport = classification_report(y_test, y_pred, output_dict=True)
from keras.utils import to_categorical from keras import losses,metrics from keras.callbacks import ModelCheckpoint import Dataset_mobile import os if __name__ == '__main__': save_dir = os.path.join(os.getcwd(), 'saved_models') model_name = 'xceptionMobile_wood_model.h5' model_path = os.path.join(save_dir, model_name) x_train, y_train, x_test, y_test, dictionary = Dataset_mobile.read_data() x_train_resized = Dataset_mobile.resize_imgs(x_train) x_test_resized = Dataset_mobile.resize_imgs(x_test) y_train = to_categorical(y_train, num_classes=2) y_test = to_categorical(y_test, num_classes=2) model = Xception(include_top=True, weights=None, classes=2) opt = Adam(lr=5e-6) model.compile(optimizer=opt, loss=losses.categorical_crossentropy, metrics=[metrics.categorical_accuracy]) model.fit(x_train_resized,y_train,epochs=20,batch_size=6) model.save(model_path) score1 = model.evaluate(x_train_resized, y_train, batch_size=6) score2 = model.evaluate(x_test_resized, y_test, batch_size=6) print(score1) print(score2)