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'])
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