From 5ef74c2031a040f30a670dc7d60790fc6a9ec720 Mon Sep 17 00:00:00 2001
From: Joseph Redmon <pjreddie@gmail.com>
Date: Fri, 02 May 2014 22:20:34 +0000
Subject: [PATCH] Slowly refactoring and pushing to GPU

---
 src/convolutional_layer.c |   17 +++++++----------
 1 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/src/convolutional_layer.c b/src/convolutional_layer.c
index 45bb54a..31a4af6 100644
--- a/src/convolutional_layer.c
+++ b/src/convolutional_layer.c
@@ -100,7 +100,7 @@
     float *b = layer.col_image;
     float *c = layer.output;
     for(i = 0; i < layer.batch; ++i){
-        im2col_cpu(in+i*(n/layer.batch),  layer.c,  layer.h,  layer.w,  layer.size,  layer.stride, b+i*(n/layer.batch));
+        im2col_gpu(in+i*(n/layer.batch),  layer.c,  layer.h,  layer.w,  layer.size,  layer.stride, b+i*(n/layer.batch));
     }
     gemm(0,0,m,n,k,1,a,k,b,n,0,c,n);
     activate_array(layer.output, m*n, layer.activation);
@@ -162,16 +162,13 @@
 
 void update_convolutional_layer(convolutional_layer layer, float step, float momentum, float decay)
 {
-    int i;
     int size = layer.size*layer.size*layer.c*layer.n;
-    for(i = 0; i < layer.n; ++i){
-        layer.biases[i] += step*layer.bias_updates[i];
-        layer.bias_updates[i] *= momentum;
-    }
-    for(i = 0; i < size; ++i){
-        layer.filters[i] += step*(layer.filter_updates[i] - decay*layer.filters[i]);
-        layer.filter_updates[i] *= momentum;
-    }
+    axpy_cpu(layer.n, step, layer.bias_updates, 1, layer.biases, 1);
+    scal_cpu(layer.n, momentum, layer.bias_updates, 1);
+
+    scal_cpu(size, 1.-step*decay, layer.filters, 1);
+    axpy_cpu(size, step, layer.filter_updates, 1, layer.filters, 1);
+    scal_cpu(size, momentum, layer.filter_updates, 1);
 }
 
 void test_convolutional_layer()

--
Gitblit v1.10.0