Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/clementfarabet/lua---nnx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael 'myrhev' Mathieu <michael.mathieu@ens.fr>2012-03-27 01:36:13 +0400
committerMichael 'myrhev' Mathieu <michael.mathieu@ens.fr>2012-03-27 01:36:13 +0400
commit9dcb87d540391fbea394728e64612da0ef5068b9 (patch)
tree9707f27c2327de9824f7dfd8c2cddcafb84163eb /generic
parent1b1b8db50b6d2e07cf045b9fe5bdacedd6b31e22 (diff)
Faster SpatialDownSampling
Diffstat (limited to 'generic')
-rw-r--r--generic/SpatialDownSampling.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/generic/SpatialDownSampling.c b/generic/SpatialDownSampling.c
index 9dc82bc..0feef5d 100644
--- a/generic/SpatialDownSampling.c
+++ b/generic/SpatialDownSampling.c
@@ -25,7 +25,7 @@ static int nn_(SpatialDownSampling_updateOutput)(lua_State *L) {
real *output_data = THTensor_(data)(output);
// resample each plane
- real factor = 1.0f / (rH*rW), avg;
+ real avg;
real *input_p = input_data, *output_p = output_data;
int k, x, y, i, j;
for (k = 0; k < ichannels; ++k, input_p += is[0], output_p += os[0])
@@ -35,9 +35,9 @@ static int nn_(SpatialDownSampling_updateOutput)(lua_State *L) {
for (i = y*rH; i < (y+1)*rH; ++i)
for (j = x*rW; j < (x+1)*rW; ++j)
avg += input_p[i*is[1]+j*is[2]];
- avg *= factor;
output_p[y*os[1] + x*os[2]] = avg;
}
+ THTensor_(mul)(output, output, 1.0f/(rH*rW));
return 1;
}
@@ -64,7 +64,6 @@ static int nn_(SpatialDownSampling_updateGradInput)(lua_State *L) {
real *gradOutput_data = THTensor_(data)(gradOutput);
// compute gradients for each plane
- real factor = 1.0f / (rH*rW);
real *gradInput_p = gradInput_data, *gradOutput_p = gradOutput_data;
int k, x, y, i, j;
for (k = 0; k < ochannels; ++k, gradInput_p += gis[0], gradOutput_p += gos[0])
@@ -72,7 +71,8 @@ static int nn_(SpatialDownSampling_updateGradInput)(lua_State *L) {
for (x = 0; x < owidth; ++x)
for (i = y*rH; i < (y+1)*rH; ++i)
for (j = x*rW; j < (x+1)*rW; ++j)
- gradInput_p[i*gis[1]+j*gis[2]] += gradOutput_p[y*gos[1]+x*gos[2]] * factor;
+ gradInput_p[i*gis[1]+j*gis[2]] += gradOutput_p[y*gos[1]+x*gos[2]];
+ THTensor_(mul)(gradInput, gradInput, 1.0f/(rH*rW));
return 1;
}