diff --git a/Makefile b/Makefile
index 366faef160f2fc04e732928649908890f375c38f..f3e4b792dd3dfefa9607dcbd28d7ad6088892133 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 GPU=1
-CUDNN=0
+CUDNN=1
 OPENCV=1
 DEBUG=0
 
diff --git a/src/coco_demo.c b/src/coco_demo.c
index c516f783a52ec26b4a618e77ddc287fe3742aa44..e5e9087835a0aab2c98e58446cdc179210132d82 100644
--- a/src/coco_demo.c
+++ b/src/coco_demo.c
@@ -10,8 +10,8 @@
 #define FRAMES 1
 
 #ifdef OPENCV
-#include "opencv2/highgui/highgui.hpp"
-#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/highgui/highgui_c.h"
+#include "opencv2/imgproc/imgproc_c.h"
 void convert_coco_detections(float *predictions, int classes, int num, int square, int side, int w, int h, float thresh, float **probs, box *boxes, int only_objectness);
 
 extern char *coco_classes[];
diff --git a/src/network.c b/src/network.c
index 88b70857cdf314fbf17fdd14063f0cab71348d37..b617f7e8ab205dcbc2e36483ce8463304d837246 100644
--- a/src/network.c
+++ b/src/network.c
@@ -253,6 +253,7 @@ void backward_network(network net, network_state state)
     int i;
     float *original_input = state.input;
     float *original_delta = state.delta;
+    state.workspace = net.workspace;
     for(i = net.n-1; i >= 0; --i){
         state.index = i;
         if(i == 0){
diff --git a/src/rnn.c b/src/rnn.c
index 5e229baab6ce7f9d5833b0655797409ff98d7e78..cda38ef8ae49c0275d14570a790cad57772b0899 100644
--- a/src/rnn.c
+++ b/src/rnn.c
@@ -199,7 +199,7 @@ void train_char_rnn(char *cfgfile, char *weightfile, char *filename, int clear,
             }
         }
 
-        if(i%100==0){
+        if(i%1000==0){
             char buff[256];
             sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i);
             save_weights(net, buff);
diff --git a/src/yolo_demo.c b/src/yolo_demo.c
index 194a2362a28f5150eb3f7ceca419ae36e7e3bf1f..ec2998459db1a4226cd8d65b53ccf0fe6bcf7512 100644
--- a/src/yolo_demo.c
+++ b/src/yolo_demo.c
@@ -8,8 +8,8 @@
 #include <sys/time.h>
 
 #ifdef OPENCV
-#include "opencv2/highgui/highgui.hpp"
-#include "opencv2/imgproc/imgproc.hpp"
+#include "opencv2/highgui/highgui_c.h"
+#include "opencv2/imgproc/imgproc_c.h"
 image ipl_to_image(IplImage* src);
 void convert_yolo_detections(float *predictions, int classes, int num, int square, int side, int w, int h, float thresh, float **probs, box *boxes, int only_objectness);