Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
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))
Ejemplo n.º 6
0
    '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')