From 5f99ae908b5fac433df28cc806d5514a6054b26c Mon Sep 17 00:00:00 2001 From: peterzhang2029 Date: Mon, 13 Nov 2017 13:44:12 +0800 Subject: [PATCH] refine notation in bilinear_tensor_product_op.h --- paddle/operators/bilinear_tensor_product_op.h | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/paddle/operators/bilinear_tensor_product_op.h b/paddle/operators/bilinear_tensor_product_op.h index 6b40f77c42..29da5f4d2a 100644 --- a/paddle/operators/bilinear_tensor_product_op.h +++ b/paddle/operators/bilinear_tensor_product_op.h @@ -27,10 +27,6 @@ template using EigenMatrix = framework::EigenMatrix; -template -using EigenVector = framework::EigenVector; - template class BilinearTensorProductKernel : public framework::OpKernel { public: @@ -49,7 +45,9 @@ class BilinearTensorProductKernel : public framework::OpKernel { auto weight_dims = weight->dims(); auto place = ctx.GetEigenDevice(); - // Create the intermediate variables. + // Create the intermediate variable to caculate the result of + // Input(X) multiplied by Input(Weight_i), the formula is: + // left_mul = X Weight_i. Tensor left_mul; left_mul.mutable_data(framework::make_ddim({batch_size, weight_dims[2]}), ctx.GetPlace()); @@ -95,11 +93,13 @@ class BilinearTensorProductGradKernel : public framework::OpKernel { auto d_out_mat = EigenMatrix::From(*d_out); auto place = ctx.GetEigenDevice(); - // Create the intermediate variables for gradient. + // Create the intermediate variable to caculate the Output(Y@Grad). Tensor x_scale; x_scale.mutable_data(framework::make_ddim({batch_size, weight_dims[1]}), ctx.GetPlace()); auto x_scale_mat = EigenMatrix::From(x_scale); + + // Create the intermediate variable to caculate the Output(X@Grad). Tensor y_scale; y_scale.mutable_data(framework::make_ddim({batch_size, weight_dims[2]}), ctx.GetPlace()); @@ -107,19 +107,19 @@ class BilinearTensorProductGradKernel : public framework::OpKernel { math::SetConstant set_zero; - // Set X@Grad be zero at first. + // Set Output(X@Grad) be zero. if (d_x) { d_x->mutable_data(ctx.GetPlace()); set_zero(ctx.device_context(), d_x, static_cast(0)); } - // Set Y@Grad be zero at first. + // Set Output(Y@Grad) be zero. if (d_y) { d_y->mutable_data(ctx.GetPlace()); set_zero(ctx.device_context(), d_y, static_cast(0)); } - // Caculate the X@Grad and Y@Grad. + // Caculate the Output(X@Grad) and Output(Y@Grad). if (d_x || d_y) { Eigen::DSizes bcast_for_x(1, weight_dims[2]); Eigen::DSizes bcast_for_y(1, weight_dims[1]); @@ -150,7 +150,7 @@ class BilinearTensorProductGradKernel : public framework::OpKernel { } } - // Caculate the gradient of Weight. + // Caculate the gradient of Input(Weight). if (d_weight) { d_weight->mutable_data(ctx.GetPlace()); Eigen::DSizes bcast_for_weight(1, weight_dims[1]); @@ -169,7 +169,7 @@ class BilinearTensorProductGradKernel : public framework::OpKernel { } } - // Caculate the gradient of Bias. + // Caculate the gradient of Input(Bias). if (d_bias) { d_bias->mutable_data(ctx.GetPlace()); auto d_bias_mat = EigenMatrix::From(*d_bias); -- GitLab