From 8bcdee86585f496afe1a8a38d608ea0504a11243 Mon Sep 17 00:00:00 2001
From: Joseph Redmon <pjreddie@gmail.com>
Date: Tue, 01 Sep 2015 18:22:03 +0000
Subject: [PATCH] Some bug fixes, random stuff
---
src/network.c | 35 ++++++++++++++++++++++++++++++-----
1 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/src/network.c b/src/network.c
index fba4494..70bcb58 100644
--- a/src/network.c
+++ b/src/network.c
@@ -4,12 +4,14 @@
#include "image.h"
#include "data.h"
#include "utils.h"
+#include "blas.h"
#include "crop_layer.h"
#include "connected_layer.h"
#include "convolutional_layer.h"
#include "deconvolutional_layer.h"
#include "detection_layer.h"
+#include "region_layer.h"
#include "normalization_layer.h"
#include "maxpool_layer.h"
#include "avgpool_layer.h"
@@ -35,6 +37,8 @@
return "softmax";
case DETECTION:
return "detection";
+ case REGION:
+ return "region";
case DROPOUT:
return "dropout";
case CROP:
@@ -79,6 +83,8 @@
forward_normalization_layer(l, state);
} else if(l.type == DETECTION){
forward_detection_layer(l, state);
+ } else if(l.type == REGION){
+ forward_region_layer(l, state);
} else if(l.type == CONNECTED){
forward_connected_layer(l, state);
} else if(l.type == CROP){
@@ -129,12 +135,16 @@
float sum = 0;
int count = 0;
for(i = 0; i < net.n; ++i){
- if(net.layers[net.n-1].type == COST){
- sum += net.layers[net.n-1].output[0];
+ if(net.layers[i].type == COST){
+ sum += net.layers[i].output[0];
++count;
}
- if(net.layers[net.n-1].type == DETECTION){
- sum += net.layers[net.n-1].cost[0];
+ if(net.layers[i].type == DETECTION){
+ sum += net.layers[i].cost[0];
+ ++count;
+ }
+ if(net.layers[i].type == REGION){
+ sum += net.layers[i].cost[0];
++count;
}
}
@@ -177,6 +187,8 @@
backward_dropout_layer(l, state);
} else if(l.type == DETECTION){
backward_detection_layer(l, state);
+ } else if(l.type == REGION){
+ backward_region_layer(l, state);
} else if(l.type == SOFTMAX){
if(i != 0) backward_softmax_layer(l, state);
} else if(l.type == CONNECTED){
@@ -507,4 +519,17 @@
return acc;
}
-
+void free_network(network net)
+{
+ int i;
+ for(i = 0; i < net.n; ++i){
+ free_layer(net.layers[i]);
+ }
+ free(net.layers);
+ #ifdef GPU
+ if(*net.input_gpu) cuda_free(*net.input_gpu);
+ if(*net.truth_gpu) cuda_free(*net.truth_gpu);
+ if(net.input_gpu) free(net.input_gpu);
+ if(net.truth_gpu) free(net.truth_gpu);
+ #endif
+}
--
Gitblit v1.10.0