def train_and_validate(init_learning_rate_log, weight_decay_log): tf.reset_default_graph() graph = tf.get_default_graph() config = tf.ConfigProto() config.gpu_options.allow_growth = True hp_d['init_learning_rate'] = 10**init_learning_rate_log hp_d['weight_decay'] = 10**weight_decay_log model = ConvNet([227, 227, 3], 2, **hp_d) evaluator = Evaluator() optimizer = Optimizer(model, train_set, evaluator, val_set=val_set, **hp_d) sess = tf.Session(graph=graph, config=config) train_results = optimizer.train(sess, details=True, verbose=True, **hp_d) # Return the maximum validation score as target best_val_score = np.max(train_results['eval_scores']) return best_val_score
""" 2. Set training hyperparameters """ hp_d = dict() # FIXME: Training hyperparameters hp_d['batch_size'] = 128 hp_d['num_epochs'] = 1800 hp_d['augment_train'] = True hp_d['init_learning_rate'] = 0.2 hp_d['momentum'] = 0.9 # FIXME: Regularization hyperparameters hp_d['weight_decay'] = 0.0001 hp_d['dropout_prob'] = 0.0 # FIXME: Evaluation hyperparameters hp_d['score_threshold'] = 1e-4 """ 3. Build graph, initialize a session and start training """ # Initialize graph = tf.get_default_graph() config = tf.ConfigProto() config.gpu_options.allow_growth = True model = ConvNet([32, 32, 3], 10, **hp_d) evaluator = Evaluator() optimizer = Optimizer(model, train_set, evaluator, val_set=val_set, **hp_d) sess = tf.Session(graph=graph, config=config) train_results = optimizer.train(sess, details=True, verbose=True, **hp_d)
trainval_size = X_trainval.shape[0] val_size = int(trainval_size * 0.1) # FIXME val_set = dataset.DataSet(X_trainval[:val_size], y_trainval[:val_size]) train_set = dataset.DataSet(X_trainval[val_size:], y_trainval[val_size:]) """ 2. Set training hyperparameters""" hp_d = dict() # FIXME: Training hyperparameters hp_d['batch_size'] = 8 hp_d['num_epochs'] = 100 hp_d['init_learning_rate'] = 1e-3 hp_d['momentum'] = 0.9 hp_d['learning_rate_patience'] = 10 hp_d['learning_rate_decay'] = 0.1 hp_d['eps'] = 1e-8 hp_d['score_threshold'] = 1e-4 hp_d['pretrain'] = True """ 3. Build graph, initialize a session and start training """ graph = tf.get_default_graph() config = tf.ConfigProto() config.gpu_options.allow_growth = True model = ConvNet([IM_SIZE[0], IM_SIZE[1], 3], NUM_CLASSES, **hp_d) evaluator = Evaluator() optimizer = Optimizer(model, train_set, evaluator, val_set=val_set, **hp_d) sess = tf.Session(graph=graph, config=config) train_results = optimizer.train(sess, save_dir='.', details=True, verbose=True, **hp_d)