diff options
author | Michael 'myrhev' Mathieu <michael.mathieu@ens.fr> | 2012-03-27 01:36:13 +0400 |
---|---|---|
committer | Michael 'myrhev' Mathieu <michael.mathieu@ens.fr> | 2012-03-27 01:36:13 +0400 |
commit | 9dcb87d540391fbea394728e64612da0ef5068b9 (patch) | |
tree | 9707f27c2327de9824f7dfd8c2cddcafb84163eb /generic | |
parent | 1b1b8db50b6d2e07cf045b9fe5bdacedd6b31e22 (diff) |
Faster SpatialDownSampling
Diffstat (limited to 'generic')
-rw-r--r-- | generic/SpatialDownSampling.c | 8 |
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; } |