예제 #1
0
            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)
예제 #2
0
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)