def fit_model():
    start = 0.03
    stop = 0.001
    nb_epoch = 10000
    PRETRAIN = False
    learning_rate = np.linspace(start, stop, nb_epoch)

    X, y = load2d()
    X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                test_size=0.2, random_state=42)

    model = cnn_model()
    if PRETRAIN:
        model.load_weights('my_cnn_model_weights.h5')
    sgd = SGD(lr=start, momentum=0.9, nesterov=True)
    model.compile(loss='mse', optimizer=sgd)
    change_lr = LearningRateScheduler(lambda epoch: float(learning_rate[epoch]))
    early_stop = EarlyStopping(patience=100)

    flipgen = FlippedImageDataGenerator()
    hist = model.fit_generator(flipgen.flow(X_train, y_train),
                            samples_per_epoch=X_train.shape[0],
                            nb_epoch=nb_epoch,
                            validation_data=(X_test, y_test),
                            callbacks=[change_lr, early_stop])

    model.save_weights('my_cnn_model_weights.h5', overwrite=True)
    np.savetxt('my_cnn_model_loss.csv', hist.history['loss'])
    np.savetxt('my_cnn_model_val_loss.csv', hist.history['val_loss'])
Пример #2
0
def fit_specialists():
    specialists = OrderedDict()
    start = 0.03
    stop = 0.001
    nb_epoch = 1
    PRETRAIN = False
    learning_rate = np.linspace(start, stop, nb_epoch)

    for setting in SPECIALIST_SETTINGS:
        cols = setting['columns']
        X, y = load2d(cols=cols)
        X_train, X_test, y_train, y_test = train_test_split(X,
                                                            y,
                                                            test_size=0.2,
                                                            random_state=42)
        model = cnnn_model()
        if PRETRAIN:
            model.load_weights('my_cnn_model_weights.h5')
        model.layers.pop()
        model.outputs = [model.layers[-1].output]
        model.layers[-1].outbound_nodes = []
        model.add(Dense(len(cols)))

        sgd = SGD(lr=start, momentum=0.9, nesterov=True)
        model.compile(loss='mse', optimizer=sgd)
        lr_decay = LearningRateScheduler(
            lambda epoch: float(learning_rate[epoch]))
        early_stop = EarlyStopping(patience=100)

        flipgen = FlippedImageDataGenerator()
        flipgen.flip_indices = setting['flip_indices']

        print('Training model for columns {} for {} epochs'.format(
            cols, nb_epoch))

        hist = model.fit_generator(flipgen.flow(X_train, y_train),
                                   samples_per_epoch=X_train.shape[0],
                                   nb_epoch=nb_epoch,
                                   validation_data=(X_test, y_test),
                                   callbacks=[lr_decay, early_stop])

        model.save_weights('my_cnn_model_{}_weights.h5'.format(cols[0]))
        np.savetxt('my_cnn_model_{}_loss.csv'.format(cols[0]),
                   hist.history['loss'])
        np.savetxt('my_cnn_model_{}_val_loss.csv'.format(cols[0]),
                   hist.history['val_loss'])

        specialists[cols] = model
def fit_specialists():
    specialists = OrderedDict()
    start = 0.03
    stop = 0.001
    nb_epoch = 10000
    PRETRAIN = False
    learning_rate = np.linspace(start, stop, nb_epoch)

    for setting in SPECIALIST_SETTINGS:
        cols = setting['columns']
        X, y = load2d(cols=cols)
        X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                test_size=0.2, random_state=42)
        model = cnn_model()
        if PRETRAIN:
            model.load_weights('my_cnn_model_weights.h5')
        model.layers.pop()
        model.outputs = [model.layers[-1].output]
        model.layers[-1].outbound_nodes = []
        model.add(Dense(len(cols)))

        sgd = SGD(lr=start, momentum=0.9, nesterov=True)
        model.compile(loss='mse', optimizer=sgd)
        lr_decay = LearningRateScheduler(lambda epoch: float(learning_rate[epoch]))
        early_stop = EarlyStopping(patience=100)

        flipgen = FlippedImageDataGenerator()
        flipgen.flip_indices = setting['flip_indices']

        print('Training model for columns {} for {} epochs'.format(cols, nb_epoch))

        hist = model.fit_generator(flipgen.flow(X_train, y_train),
                                samples_per_epoch=X_train.shape[0],
                                nb_epoch=nb_epoch,
                                validation_data=(X_test, y_test),
                                callbacks=[lr_decay, early_stop])

        model.save_weights('my_cnn_model_{}_weights.h5'.format(cols[0]))
        np.savetxt('my_cnn_model_{}_loss.csv'.format(cols[0]), hist.history['loss'])
        np.savetxt('my_cnn_model_{}_val_loss.csv'.format(cols[0]), hist.history['val_loss'])

        specialists[cols] = model