@@ -3902,6 +3902,8 @@ void CpuMatrix::bilinearForward(const Matrix& in,
3902
3902
size_t batchSize = getHeight ();
3903
3903
size_t inputW = in.getWidth ();
3904
3904
size_t inputH = in.getHeight ();
3905
+ size_t inPosOffset = inImgH * inImgW;
3906
+ size_t outPosOffset = outImgH * outImgW;
3905
3907
(void )(inputH);
3906
3908
3907
3909
real* outData = getData ();
@@ -3931,8 +3933,8 @@ void CpuMatrix::bilinearForward(const Matrix& in,
3931
3933
h2lambda * (w2lambda * inPos[0 ] + w1lambda * inPos[wid]) +
3932
3934
h1lambda * (w2lambda * inPos[hid * inImgW] +
3933
3935
w1lambda * inPos[hid * inImgW + wid]);
3934
- inPos += inImgH * inImgW ;
3935
- outPos += outImgH * outImgW ;
3936
+ inPos += inPosOffset ;
3937
+ outPos += outPosOffset ;
3936
3938
}
3937
3939
}
3938
3940
}
@@ -3954,6 +3956,8 @@ void CpuMatrix::bilinearBackward(const Matrix& out,
3954
3956
size_t inputH = getHeight ();
3955
3957
size_t outputW = out.getWidth ();
3956
3958
size_t batchSize = out.getHeight ();
3959
+ size_t inPosOffset = inImgH * inImgW;
3960
+ size_t outPosOffset = outImgH * outImgW;
3957
3961
(void )(inputH);
3958
3962
3959
3963
real* inGrad = getData ();
@@ -3981,8 +3985,8 @@ void CpuMatrix::bilinearBackward(const Matrix& out,
3981
3985
inPos[wid] += h2lambda * w1lambda * outPos[0 ];
3982
3986
inPos[hid * inImgW] += h1lambda * w2lambda * outPos[0 ];
3983
3987
inPos[hid * inImgW + wid] += h1lambda * w1lambda * outPos[0 ];
3984
- inPos += inImgH * inImgW ;
3985
- outPos += outImgH * outImgW ;
3988
+ inPos += inPosOffset ;
3989
+ outPos += outPosOffset ;
3986
3990
}
3987
3991
}
3988
3992
}
0 commit comments