mirror of
https://github.com/pjreddie/darknet.git
synced 2023-08-10 21:13:14 +03:00
Connected layers work forward and backward!
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
void run_network(image input, network net)
|
||||
{
|
||||
int i;
|
||||
double *input_d = 0;
|
||||
double *input_d = input.data;
|
||||
for(i = 0; i < net.n; ++i){
|
||||
if(net.types[i] == CONVOLUTIONAL){
|
||||
convolutional_layer layer = *(convolutional_layer *)net.layers[i];
|
||||
@ -30,6 +30,77 @@ void run_network(image input, network net)
|
||||
}
|
||||
}
|
||||
|
||||
void update_network(network net, double step)
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < net.n; ++i){
|
||||
if(net.types[i] == CONVOLUTIONAL){
|
||||
convolutional_layer layer = *(convolutional_layer *)net.layers[i];
|
||||
update_convolutional_layer(layer, step);
|
||||
}
|
||||
else if(net.types[i] == MAXPOOL){
|
||||
//maxpool_layer layer = *(maxpool_layer *)net.layers[i];
|
||||
}
|
||||
else if(net.types[i] == CONNECTED){
|
||||
connected_layer layer = *(connected_layer *)net.layers[i];
|
||||
update_connected_layer(layer, step);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void learn_network(image input, network net)
|
||||
{
|
||||
int i;
|
||||
image prev;
|
||||
double *prev_p;
|
||||
for(i = net.n-1; i >= 0; --i){
|
||||
if(i == 0){
|
||||
prev = input;
|
||||
prev_p = prev.data;
|
||||
} else if(net.types[i-1] == CONVOLUTIONAL){
|
||||
convolutional_layer layer = *(convolutional_layer *)net.layers[i-1];
|
||||
prev = layer.output;
|
||||
prev_p = prev.data;
|
||||
} else if(net.types[i-1] == MAXPOOL){
|
||||
maxpool_layer layer = *(maxpool_layer *)net.layers[i-1];
|
||||
prev = layer.output;
|
||||
prev_p = prev.data;
|
||||
} else if(net.types[i-1] == CONNECTED){
|
||||
connected_layer layer = *(connected_layer *)net.layers[i-1];
|
||||
prev_p = layer.output;
|
||||
}
|
||||
|
||||
if(net.types[i] == CONVOLUTIONAL){
|
||||
convolutional_layer layer = *(convolutional_layer *)net.layers[i];
|
||||
learn_convolutional_layer(prev, layer);
|
||||
}
|
||||
else if(net.types[i] == MAXPOOL){
|
||||
//maxpool_layer layer = *(maxpool_layer *)net.layers[i];
|
||||
}
|
||||
else if(net.types[i] == CONNECTED){
|
||||
connected_layer layer = *(connected_layer *)net.layers[i];
|
||||
learn_connected_layer(prev_p, layer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
double *get_network_output(network net)
|
||||
{
|
||||
int i = net.n-1;
|
||||
if(net.types[i] == CONVOLUTIONAL){
|
||||
convolutional_layer layer = *(convolutional_layer *)net.layers[i];
|
||||
return layer.output.data;
|
||||
}
|
||||
else if(net.types[i] == MAXPOOL){
|
||||
maxpool_layer layer = *(maxpool_layer *)net.layers[i];
|
||||
return layer.output.data;
|
||||
}
|
||||
else if(net.types[i] == CONNECTED){
|
||||
connected_layer layer = *(connected_layer *)net.layers[i];
|
||||
return layer.output;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
image get_network_image(network net)
|
||||
{
|
||||
int i;
|
||||
|
Reference in New Issue
Block a user