mirror of
https://github.com/pjreddie/darknet.git
synced 2023-08-10 21:13:14 +03:00
CSE546 submission
This commit is contained in:
parent
8c3694bc91
commit
ad9dbfe164
15
nist.cfg
15
nist.cfg
@ -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]
|
||||||
|
@ -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));
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
46
src/tests.c
46
src/tests.c
@ -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);
|
||||||
|
fprintf(stderr, "\nTRAIN: %f\n", train_acc);
|
||||||
|
double test_acc = network_accuracy(net, test);
|
||||||
|
fprintf(stderr, "TEST: %f\n\n", test_acc);
|
||||||
|
printf("%d, %f, %f\n", count, train_acc, test_acc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
double train_acc = network_accuracy(net, train);
|
|
||||||
fprintf(stderr, "\nTRAIN: %f\n", train_acc);
|
|
||||||
double test_acc = network_accuracy(net, test);
|
|
||||||
fprintf(stderr, "TEST: %f\n\n", 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,24 +228,25 @@ 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;
|
||||||
/*
|
/*
|
||||||
data *split = split_data(d, 1, 10);
|
data *split = split_data(d, 1, 10);
|
||||||
data train = split[0];
|
data train = split[0];
|
||||||
data test = split[1];
|
data test = split[1];
|
||||||
*/
|
*/
|
||||||
matrix prediction = make_matrix(test.y.rows, test.y.cols);
|
matrix prediction = make_matrix(test.y.rows, test.y.cols);
|
||||||
int n = 30;
|
int n = 30;
|
||||||
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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user