Пример #1
0
import matplotlib.pyplot as plt
from cs231n.classifiers.cnn import *
from cs231n.data_utils import get_CIFAR10_data
from cs231n.gradient_check import eval_numerical_gradient_array, eval_numerical_gradient
from cs231n.layers import *
from cs231n.fast_layers import *
from cs231n.solver import Solver

data = get_CIFAR10_data()
    
from cs231n.classifiers.convnet import *

log = open("log.txt", "w")

for i in xrange(10):
    lr = np.random.uniform(1e-2, 1e-5)
    model = ConvNet(weight_scale=0.001, hidden_dim=500, reg=0.001, filter_size=3, num_filters=(16, 16, 16, 16))

    print("lr: %e" % (lr))
    solver = Solver(model, data,
                    num_epochs=2, batch_size=50,
                    update_rule="adam",
                    optim_config={"learning_rate":lr},
                    verbose=True, print_every=50)

    solver.train()
    acc = solver.check_accuracy(solver.X_val, solver.y_val)
    log.write("lr: %e, acc: %f\n" % (lr, acc))

log.close()
Пример #2
0
bn_solver = Solver(bn_model,
                   data,
                   num_epochs=100,
                   batch_size=50,
                   update_rule='adam',
                   optim_config={
                       'learning_rate': 1e-3,
                   },
                   verbose=True,
                   print_every=200)
bn_solver.train()

################################################################################
#                              END OF YOUR CODE                                #
################################################################################

## Test you model
# Run your best model on the validation and test sets. You should achieve above 50% accuracy on the validation set.

# In[]:
X_val, X_test, y_val, y_test = data['X_val'], data['X_test'], data[
    'y_val'], data['y_test']
#y_test_pred = np.argmax(best_model.loss(X_test), axis=1)
#y_val_pred = np.argmax(best_model.loss(X_val), axis=1)
#print 'Validation set accuracy: ', (y_val_pred == y_val).mean()
#print 'Test set accuracy: ', (y_test_pred == y_test).mean()

val_acc = bn_solver.check_accuracy(X_val, y_val)
tst_acc = bn_solver.check_accuracy(X_test, y_test)
print 'Validation set accuracy: ', (val_acc)
print 'Test set accuracy: ', (tst_acc)
Пример #3
0
        learning_rate = 10**np.random.uniform(low=-9,high=-6,size =20)
        reg = np.random.uniform(low=0.4,high=0.9,size =20)
        for lr in learning_rate:
            for rg in reg:
               # model = FullyConnectedNet([100, 100],
                 #             weight_scale=weight_scale,reg=rg, dtype=np.float64,normalization="batchnorm",dropout = 0.5)
                model = model_prev 
                solver = Solver(model,data,
                                print_every=10, num_epochs=num_epochs, batch_size=batch_size,
                                update_rule="rmsprop",verbose=False,
                                optim_config={
                                  'learning_rate': lr,
                             }
                        )
                solver.train()
                result = solver.check_accuracy(X, y, num_samples=None, batch_size=65)
                if result > acc:
                    acc = result
                    marker = "cs231n/data_record/lr_%f_end_rg_%f_end_acc_%f"%(lr,rg,acc)
                    solver.checkpoint_name = marker
                    solver._save_checkpoint() 
                    print("\ntest accuracy = %f\n"%(acc))
                    print("\nlearning rate = %f\n"%(lr))
                    print("\nreg = %f\n"%(rg))
                 

print("\n####################################################################################################################################\n")
print("\ntest 3 layer feedforward net: with dropouts and batchnormalization\n")
print("\n####################################################################################################################################\n")
if not test:
    #state = np.random.get_state()
Пример #4
0
                    tic = time.time()
                    model = FullyConnectedNet(hidden_dims,
                                              reg=reg,
                                              weight_scale=5e-2,
                                              dropout=p,
                                              use_batchnorm=True)
                    solver = Solver(model,
                                    data,
                                    num_epochs=num_epoch,
                                    batch_size=200,
                                    update_rule="adam",
                                    optim_config={'learning_rate': lr},
                                    verbose=True)
                    solver.train()
                    val_acc = solver.check_accuracy(data["X_val"],
                                                    data["y_val"],
                                                    batch_size=200)
                    est_time = toc - tic
                    results[(hidden_dims, lr, reg, p)] = (val_acc, est_time)
                    if val_acc > best_val:
                        best_val = val_acc
                        best_model = model
                        print(
                            "best val accuracy : %f when lr: %2.e , reg: %.2f and p: %.2f"
                            % (val_acc, lr, reg, p))

pass

# Print out results.
for hidden_dims, lr, reg, p in sorted(results):
    val_accuracy, est_time = results[(hidden_dims, lr, reg, p)]
Пример #5
0
[print(key, value.shape) for (key, value) in data.items()]

# In[4]:

cnn = ThreeLayerConvNet(reg=1e-3)

# In[5]:

solver = Solver(cnn,
                data,
                update_rule='adam',
                optim_config={
                    'learning_rate': 1e-3,
                },
                lr_decay=0.95,
                num_epochs=50,
                batch_size=100,
                print_every=100)

# In[6]:

solver.train()

# In[7]:

print(solver.check_accuracy(data['X_train'], data['y_train']))
print(solver.check_accuracy(data['X_test'], data['y_test']))

# In[ ]:
Пример #6
0
data = load_data()
checkpoint = pickle.load(open('RBM_epoch_10.pkl', 'rb'))
rbm_params = checkpoint['model']

model = TwoLayerNet(input_dim=28 * 28)
solver = Solver(model,
                data,
                update_rule='sgd',
                optim_config={'learning_rate': 1e-3},
                print_every=100,
                lr_decay=0.9,
                num_epochs=10,
                batch_size=200)
solver.train()
solver.check_accuracy(data['X_test'], data['y_test'])
plot_solver(solver)

model = TwoLayerNet(input_dim=28 * 28)
model.params = rbm_params
solver = Solver(model,
                data,
                update_rule='sgd',
                optim_config={'learning_rate': 1e-3},
                print_every=100,
                lr_decay=0.9,
                num_epochs=10,
                batch_size=200)
solver.train()
solver.check_accuracy(data['X_test'], data['y_test'])
plot_solver(solver)
Пример #7
0
data = get_CIFAR10_data()
for k, v in data.items():
    print('{}: '.format(k), v.shape)

# set up model
model = ThreeLayerConvNet(hidden_dim=512, reg=0.001)

# encapsulate it into solver
solver = Solver(model,
                data,
                num_epochs=1,
                batch_size=50,
                update_rule='adam',
                optim_config={
                    'learning_rate': 1e-3,
                },
                verbose=True,
                print_every=50,
                checkpoint_name="checkpoint/cnn")
solver.train()

solver.check_accuracy(data["X_test"], data["y_test"])

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlabel("Iteration")
ax.set_ylabel("Loss")
ax.plot(solver.loss_history)
fig.savefig("fig/loss.pdf", format="pdf")
Пример #8
0
                    num_epochs=80, batch_size=32,
                    update_rule='adam',
                    lr_decay=0.99,
                    max_jitter=2,
                    flipOrNot=True,
                    h5_file='newcon',
                    optim_config={
                      'learning_rate': learning_rate,
                        #1e-4
                        'beta2': 0.99999,
                    },
                    verbose=True, print_every=1000)

    solver.train()
    #actrain = solver.check_accuracy(data['X_train'],data['y_train'])
    acxval = solver.check_accuracy(data['X_val'], data['y_val'])
    actest = solver.check_accuracy(data['X_test'], data['y_test'])
    print learning_rate,regr
    print acxval,actest
    print
    plt.subplot(2, 1, 1)
    plt.plot(solver.loss_history, 'o',label=str(learning_rate) + ' ' + str(regr))
    plt.xlabel('iteration')
    plt.ylabel('loss')
    plt.legend()

    plt.subplot(2, 1, 2)
    plt.plot(solver.train_acc_history, '-o',label='train:' + str(learning_rate) + ' ' + str(regr))
    plt.plot(solver.val_acc_history, '-o',label='val:' + str(learning_rate) + ' ' + str(regr))
    plt.legend(['train', 'val'], loc='upper left')
    plt.xlabel('epoch')