示例#1
0
def main():
    """build, train, and test an implementation of the alexnet CNN model in keras.
    This model is trained and tested on the CIFAR-100 dataset
    """
    # parse arguments
    args = parse_arguments()
    save_dir = os.path.join(os.getcwd(), args['d'])
    if not os.path.isdir(save_dir):
        os.makedirs(save_dir)
    model_path = os.path.join(save_dir, args['n'])
    epochs = int(args['e'])
    predict_flag = args['p']
    show_flag = args['f']
    cifar10_label = [
        'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog',
        'horse', 'ship', 'truck'
    ]
    # build and train the model
    if predict_flag == True:
        if show_flag == True:
            print(filter)
            alexnet = AlexNet(10)
            model = alexnet.build_model(class_count=10)
            model.load_weights(model_path)
            print("load complete")

            (x_train, y_train), (x_test, y_test) = load_dataset()
            batch_generator = generator_ramdom_one(10, 112, 112, x_test,
                                                   y_test)
            test_x, test_y = next(batch_generator)

            layer = "conv2d_2"
            show_filter(model, test_x, layer)

        else:
            alexnet = AlexNet(10)
            model = alexnet.build_model(class_count=10)
            model.load_weights(model_path)
            print("load complete")

            (x_train, y_train), (x_test, y_test) = load_dataset()
            batch_generator = generator_ramdom_one(10, 112, 112, x_test,
                                                   y_test)

            test_x, test_y = next(batch_generator)
            print(cifar10_label[np.argmax(test_y)])
            result = model.predict(test_x)
            print(cifar10_label[np.argmax(result)])
            test_img_x = test_x[0, ::-1].copy()
            plt.imshow(test_img_x / 255, interpolation='nearest')
            plt.title(cifar10_label[np.argmax(test_y)] + "/" +
                      cifar10_label[np.argmax(result)])
            plt.show()

    else:
        alexnet = AlexNet(10)
        model = alexnet.build_model(class_count=10)
        print(model.summary())
        train_model(model, class_count=10, epochs=epochs)

        # test the model
        evaluate(model, class_count=10)

        # save the trained model
        model.save(model_path)
        print("Alexnet model saved to: %s" % model_path)
示例#2
0
from alexnet import AlexNet

alexnet = AlexNet()
alexnet.build_model(alexnet.weights, alexnet.biases)