def verify_on_full_data(): model = ThreeLayerConvNet(num_classes=2, weight_scale=0.001, hidden_dim=500, reg=0.01, dropout=0.4) data = get_CIFAR2_data() solver = Solver(model, data, num_epochs=10, batch_size=50, update_rule='adam', optim_config={ 'learning_rate': 1e-3, }, verbose=True, print_every=20) solver.train()
def verify_model_on_small_data(): data = get_CIFAR2_data() for k, v in data.items(): print('% s: ' % k, v.shape) np.random.seed(231) num_train = 100 small_data = { 'X_train': data['X_train'][:num_train], 'y_train': data['y_train'][:num_train], 'X_val': data['X_val'], 'y_val': data['y_val'], } model = cnn.ThreeLayerConvNet(weight_scale=1e-2) solver = Solver(model, small_data, num_epochs=15, batch_size=50, update_rule='adam', optim_config={ 'learning_rate': 1e-3, }, verbose=True, print_every=1) solver.train() plt.subplot(2, 1, 1) plt.plot(solver.loss_history, 'o') plt.xlabel('iteration') plt.ylabel('loss') plt.subplot(2, 1, 2) plt.plot(solver.train_acc_history, '-o') plt.plot(solver.val_acc_history, '-o') plt.legend(['train', 'val'], loc='upper left') plt.xlabel('epoch') plt.ylabel('accuracy') plt.show()
def verify_on_full_data_without_dropout(): model = ThreeLayerConvNet(num_classes=2, weight_scale=0.001, hidden_dim=500, reg=0, dropout=0) data = get_CIFAR2_data() solver = Solver(model, data, num_epochs=10, batch_size=50, update_rule='adam', optim_config={ 'learning_rate': 1e-3, }, verbose=True, print_every=20) solver.train() plt.subplot(2, 1, 1) plt.plot(solver.loss_history, 'o') plt.xlabel('iteration') plt.ylabel('loss') plt.subplot(2, 1, 2) plt.plot(solver.train_acc_history, '-o') plt.plot(solver.val_acc_history, '-o') plt.legend(['train', 'val'], loc='upper left') plt.xlabel('epoch') plt.ylabel('accuracy') plt.show() grid = visualize_grid(model.params['W1'].transpose(0, 2, 3, 1)) plt.imshow(grid.astype('uint8')) plt.axis('off') plt.gcf().set_size_inches(5, 5) plt.show()
from code_base.solver import Solver data = get_CIFAR2_data() for k, v in data.items(): print('%s: ' % k, v.shape) model = ThreeLayerConvNet(num_classes=2, weight_scale=0.001, hidden_dim=500, reg=0.001) solver = Solver(model, data, num_epochs=1, batch_size=50, update_rule='adam', optim_config={ 'learning_rate': 1e-3, }, verbose=True, print_every=20) print('start train') solver.train() print('finish train') plt.subplot(2, 1, 1) plt.plot(solver.loss_history, 'o') plt.xlabel('iteration') plt.ylabel('loss') plt.subplot(2, 1, 2) plt.plot(solver.train_acc_history, '-o')
# A bit of setup from __future__ import print_function from code_base.data_utils import * # Load the (preprocessed) CIFAR2 (airplane and bird) data. from code_base.solver import Solver data = get_CIFAR2_data() for k, v in data.items(): print('%s: ' % k, v.shape) model = load_model('./models/cnn_model_conv64_fil5_fc512_numc2_dropout_0.5.p') model.use_dropout = False print( 'Test Accuracy: ', Solver(model, data=data).check_accuracy(data['X_val'], data['y_val'], batch_size=500))
'X_val': data['X_val'], 'y_val': data['y_val'], } to_load = input('\nDo you want to load pre-trained model? [y/n]: ') if to_load == 'y' or to_load == 'Y': model = load_model('./models/cnn_model_conv64_fil5_fc512_numc2_dropout_0.5.p') else: model = ThreeLayerConvNet(num_classes=2, weight_scale=0.001, hidden_dim=512, reg=0.000001, num_filters=64, filter_size=5, dropout=0.5) solver = Solver(model, data, num_epochs=1, batch_size=128, update_rule='adam', optim_config={ 'learning_rate': 1e-4, }, lr_decay=0.8, num_train_samples=1000, verbose=True, print_every=1) start = datetime.datetime.now() solver.train() end = datetime.datetime.now() print('Total time taken: ', end - start) to_save = input('\nDo you want to save this? [y/n]: ') if to_save == 'y' or to_save == 'Y': save_model(model, './models/cnn_model_conv64_fil5_fc512_numc2_dropout_0.5.p') plt.subplot(2, 1, 1) plt.plot(solver.loss_history, 'o')