From edbccdfcaf46f11e631afe98796f3e6e170da5d0 Mon Sep 17 00:00:00 2001
From: Joseph Redmon <pjreddie@gmail.com>
Date: Sun, 26 Oct 2014 05:04:34 +0000
Subject: [PATCH] Maybe something changed?
---
src/activations.cl | 48 ++++++++++++++++++++++++++++++++++++++----------
1 files changed, 38 insertions(+), 10 deletions(-)
diff --git a/src/activations.cl b/src/activations.cl
index 6ab135a..da06e8a 100644
--- a/src/activations.cl
+++ b/src/activations.cl
@@ -8,27 +8,55 @@
float ramp_activate(float x){return x*(x>0)+.1*x;}
float tanh_activate(float x){return (exp(2*x)-1)/(exp(2*x)+1);}
-float activate(float x, ACTIVATION a, float dropout)
+float linear_gradient(float x){return 1;}
+float sigmoid_gradient(float x){return (1-x)*x;}
+float relu_gradient(float x){return (x>0);}
+float ramp_gradient(float x){return (x>0)+.1;}
+float tanh_gradient(float x){return 1-x*x;}
+
+float activate(float x, ACTIVATION a)
{
- //if((float)rand()/RAND_MAX < dropout) return 0;
switch(a){
case LINEAR:
- return linear_activate(x)/(1-dropout);
+ return linear_activate(x);
case SIGMOID:
- return sigmoid_activate(x)/(1-dropout);
+ return sigmoid_activate(x);
case RELU:
- return relu_activate(x)/(1-dropout);
+ return relu_activate(x);
case RAMP:
- return ramp_activate(x)/(1-dropout);
+ return ramp_activate(x);
case TANH:
- return tanh_activate(x)/(1-dropout);
+ return tanh_activate(x);
}
return 0;
}
-__kernel void activate_array(__global float *x,
- const int n, const ACTIVATION a, const float dropout)
+float gradient(float x, ACTIVATION a)
+{
+ switch(a){
+ case LINEAR:
+ return linear_gradient(x);
+ case SIGMOID:
+ return sigmoid_gradient(x);
+ case RELU:
+ return relu_gradient(x);
+ case RAMP:
+ return ramp_gradient(x);
+ case TANH:
+ return tanh_gradient(x);
+ }
+ return 0;
+}
+
+__kernel void activate_array(__global float *x, int n, ACTIVATION a)
{
int i = get_global_id(0);
- x[i] = activate(x[i], a, dropout);
+ x[i] = activate(x[i], a);
}
+
+__kernel void gradient_array(__global float *x, int n, ACTIVATION a, __global float *delta)
+{
+ int i = get_global_id(0);
+ delta[i] *= gradient(x[i], a);
+}
+
--
Gitblit v1.10.0