CSE546 submission

This commit is contained in:
Joseph Redmon 2013-12-10 10:30:42 -08:00
parent 8c3694bc91
commit ad9dbfe164
4 changed files with 31 additions and 34 deletions

View File

@ -2,7 +2,7 @@
width=28 width=28
height=28 height=28
channels=1 channels=1
filters=6 filters=5
size=5 size=5
stride=1 stride=1
activation=ramp activation=ramp
@ -11,7 +11,7 @@ activation=ramp
stride=2 stride=2
[conv] [conv]
filters=16 filters=50
size=5 size=5
stride=1 stride=1
activation=ramp activation=ramp
@ -19,17 +19,8 @@ activation=ramp
[maxpool] [maxpool]
stride=2 stride=2
[conv]
filters=120
size=3
stride=1
activation=ramp
[maxpool]
stride=2
[conn] [conn]
output = 80 output = 100
activation=ramp activation=ramp
[conn] [conn]

View File

@ -39,7 +39,7 @@ convolutional_layer *make_convolutional_layer(int h, int w, int c, int n, int si
layer->w = w; layer->w = w;
layer->c = c; layer->c = c;
layer->n = n; layer->n = n;
layer->edge = 1; layer->edge = 0;
layer->stride = stride; layer->stride = stride;
layer->kernels = calloc(n, sizeof(image)); layer->kernels = calloc(n, sizeof(image));
layer->kernel_updates = calloc(n, sizeof(image)); layer->kernel_updates = calloc(n, sizeof(image));

View File

@ -63,7 +63,7 @@ void update_network(network net, double step, double momentum, double decay)
} }
else if(net.types[i] == CONNECTED){ else if(net.types[i] == CONNECTED){
connected_layer layer = *(connected_layer *)net.layers[i]; connected_layer layer = *(connected_layer *)net.layers[i];
update_connected_layer(layer, step, momentum, decay); update_connected_layer(layer, step, momentum, 0);
} }
} }
} }

View File

@ -195,26 +195,31 @@ void test_full()
void test_nist() void test_nist()
{ {
srand(444444); srand(444444);
srand(888888);
network net = parse_network_cfg("nist.cfg"); network net = parse_network_cfg("nist.cfg");
data train = load_categorical_data_csv("mnist/mnist_train.csv", 0, 10); data train = load_categorical_data_csv("mnist/mnist_train.csv", 0, 10);
data test = load_categorical_data_csv("mnist/mnist_test.csv",0,10); data test = load_categorical_data_csv("mnist/mnist_test.csv",0,10);
normalize_data_rows(train); normalize_data_rows(train);
normalize_data_rows(test); normalize_data_rows(test);
randomize_data(train); //randomize_data(train);
int count = 0; int count = 0;
double lr = .0005; double lr = .0005;
while(++count <= 1){ double momentum = .9;
double acc = train_network_sgd(net, train, 10000, lr, .9, .001); double decay = 0.01;
printf("Training Accuracy: %lf\n", acc); while(++count <= 1000){
lr /= 2; double acc = train_network_sgd(net, train, 1000, lr, momentum, decay);
} printf("Training Accuracy: %lf, Params: %f %f %f\n", acc, lr, momentum, decay);
visualize_network(net);
cvWaitKey(100);
//lr /= 2;
if(count%5 == 0 && 0){
double train_acc = network_accuracy(net, train); double train_acc = network_accuracy(net, train);
fprintf(stderr, "\nTRAIN: %f\n", train_acc); fprintf(stderr, "\nTRAIN: %f\n", train_acc);
double test_acc = network_accuracy(net, test); double test_acc = network_accuracy(net, test);
fprintf(stderr, "TEST: %f\n\n", test_acc); fprintf(stderr, "TEST: %f\n\n", test_acc);
printf("%d, %f, %f\n", count, train_acc, test_acc); printf("%d, %f, %f\n", count, train_acc, test_acc);
//end = clock(); }
//printf("Neural Net Learning: %lf seconds\n", (double)(end-start)/CLOCKS_PER_SEC); }
} }
void test_ensemble() void test_ensemble()
@ -223,7 +228,6 @@ void test_ensemble()
srand(888888); srand(888888);
data d = load_categorical_data_csv("mnist/mnist_train.csv", 0, 10); data d = load_categorical_data_csv("mnist/mnist_train.csv", 0, 10);
normalize_data_rows(d); normalize_data_rows(d);
randomize_data(d);
data test = load_categorical_data_csv("mnist/mnist_test.csv", 0,10); data test = load_categorical_data_csv("mnist/mnist_test.csv", 0,10);
normalize_data_rows(test); normalize_data_rows(test);
data train = d; data train = d;
@ -237,10 +241,12 @@ void test_ensemble()
for(i = 0; i < n; ++i){ for(i = 0; i < n; ++i){
int count = 0; int count = 0;
double lr = .0005; double lr = .0005;
double momentum = .9;
double decay = .01;
network net = parse_network_cfg("nist.cfg"); network net = parse_network_cfg("nist.cfg");
while(++count <= 5){ while(++count <= 15){
double acc = train_network_sgd(net, train, train.X.rows, lr, .9, .001); double acc = train_network_sgd(net, train, train.X.rows, lr, momentum, decay);
printf("Training Accuracy: %lf\n", acc); printf("Training Accuracy: %lf Learning Rate: %f Momentum: %f Decay: %f\n", acc, lr, momentum, decay );
lr /= 2; lr /= 2;
} }
matrix partial = network_predict_data(net, test); matrix partial = network_predict_data(net, test);