|
|
|
/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved.
|
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License. */
|
|
|
|
|
|
|
|
#include "paddle/fluid/operators/activation_op.h"
|
|
|
|
#include <memory>
|
|
|
|
#include <string>
|
|
|
|
#include <type_traits>
|
|
|
|
#include <unordered_map>
|
|
|
|
#include <vector>
|
|
|
|
#include "paddle/fluid/operators/mkldnn/mkldnn_activation_op.h"
|
|
|
|
#include "paddle/fluid/platform/port.h"
|
|
|
|
#ifdef PADDLE_WITH_CUDA
|
|
|
|
#include "paddle/fluid/platform/cudnn_helper.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
DECLARE_bool(use_mkldnn);
|
|
|
|
|
|
|
|
namespace paddle {
|
|
|
|
namespace operators {
|
|
|
|
|
|
|
|
using paddle::framework::Tensor;
|
|
|
|
|
|
|
|
template <typename GradFunctor>
|
|
|
|
static constexpr bool CanInplaceAct() {
|
|
|
|
return GradFunctor::FwdDeps() == kDepOut || GradFunctor::FwdDeps() == kNoDeps;
|
|
|
|
}
|
|
|
|
|
|
|
|
#define REGISTER_ACTIVATION_OP_MAKER(OP_NAME, OP_COMMENT) \
|
|
|
|
class OP_NAME##OpMaker \
|
|
|
|
: public ::paddle::framework::OpProtoAndCheckerMaker { \
|
|
|
|
public: \
|
|
|
|
void Make() override { \
|
|
|
|
AddInput("X", "Input of " #OP_NAME \
|
|
|
|
" operator, an N-D Tensor, with data type float32, " \
|
|
|
|
"float64 or float16."); \
|
|
|
|
AddOutput("Out", "Output of " #OP_NAME \
|
|
|
|
" operator, a Tensor with shape same as input."); \
|
|
|
|
AddAttr<bool>("use_mkldnn", \
|
|
|
|
"(bool, default false) Only used in mkldnn kernel") \
|
|
|
|
.SetDefault(false); \
|
|
|
|
AddAttr<bool>("use_cudnn", \
|
|
|
|
"(bool, default false) Only used in cudnn kernel, need " \
|
|
|
|
"install cudnn") \
|
|
|
|
.SetDefault(false); \
|
|
|
|
AddComment(OP_COMMENT); \
|
|
|
|
} \
|
|
|
|
}
|
|
|
|
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
template <ActBwdOpFwdDeps kDepValue, typename T>
|
|
|
|
class ActivationGradOpMaker : public framework::SingleGradOpMaker<T> {
|
|
|
|
public:
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
using framework::SingleGradOpMaker<T>::SingleGradOpMaker;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void Apply(GradOpPtr<T> op) const override {
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetType(this->ForwardOpType() + "_grad");
|
|
|
|
op->SetInput(framework::GradVarName("Out"), this->OutputGrad("Out"));
|
|
|
|
op->SetOutput(framework::GradVarName("X"), this->InputGrad("X"));
|
|
|
|
op->SetAttrMap(this->Attrs());
|
|
|
|
|
|
|
|
if ((static_cast<int>(kDepValue) &
|
|
|
|
static_cast<int>(ActBwdOpFwdDeps::kDepX)) ||
|
|
|
|
FLAGS_use_mkldnn ||
|
|
|
|
(op->HasAttr("use_mkldnn") &&
|
|
|
|
BOOST_GET_CONST(bool, op->GetAttr("use_mkldnn")))) {
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetInput("X", this->Input("X"));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (static_cast<int>(kDepValue) &
|
|
|
|
static_cast<int>(ActBwdOpFwdDeps::kDepOut)) {
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetInput("Out", this->Output("Out"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
framework::OpKernelType GetKernelType(const framework::ExecutionContext& ctx,
|
|
|
|
const framework::OperatorWithKernel& oper,
|
|
|
|
const std::string& name) {
|
|
|
|
framework::LibraryType library{framework::LibraryType::kPlain};
|
|
|
|
framework::DataLayout layout = framework::DataLayout::kAnyLayout;
|
|
|
|
// FIXME(liuwei1031) temporarily disable the code to unblock users
|
|
|
|
// TODO(liuwei1031) figure out the reason behind
|
|
|
|
// https://github.com/PaddlePaddle/Paddle/issues/16096
|
|
|
|
// and re-enable this in the future
|
|
|
|
// #ifdef PADDLE_WITH_CUDA
|
|
|
|
// auto it1 = oper.Attrs().find("use_cudnn");
|
|
|
|
// if (it1 != oper.Attrs().end() && platform::CanCUDNNBeUsed(ctx)) {
|
|
|
|
// library = framework::LibraryType::kCUDNN;
|
|
|
|
// }
|
|
|
|
// #endif
|
|
|
|
#ifdef PADDLE_WITH_MKLDNN
|
|
|
|
auto it = oper.Attrs().find("use_mkldnn");
|
|
|
|
if (library == framework::LibraryType::kPlain && it != oper.Attrs().end() &&
|
|
|
|
platform::CanMKLDNNBeUsed(ctx)) {
|
|
|
|
library = framework::LibraryType::kMKLDNN;
|
|
|
|
layout = framework::DataLayout::kMKLDNN;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
return framework::OpKernelType(oper.IndicateVarDataType(ctx, name),
|
|
|
|
ctx.GetPlace(), layout, library);
|
|
|
|
}
|
|
|
|
|
|
|
|
class ActivationOp : public framework::OperatorWithKernel {
|
|
|
|
public:
|
|
|
|
using framework::OperatorWithKernel::OperatorWithKernel;
|
|
|
|
|
|
|
|
void InferShape(framework::InferShapeContext* ctx) const override {
|
|
|
|
ctx->ShareDim("X", /*->*/ "Out");
|
|
|
|
ctx->ShareLoD("X", /*->*/ "Out");
|
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
framework::OpKernelType GetExpectedKernelType(
|
|
|
|
const framework::ExecutionContext& ctx) const override {
|
|
|
|
return GetKernelType(ctx, *this, "X");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class ActivationOpInferVarType
|
|
|
|
: public framework::PassInDtypeAndVarTypeToOutput {
|
|
|
|
protected:
|
improve efficiency of runtime InferVarType (#22778)
* save InferVarType changes, test=develop
* remove code comments, test=develop
* tweak code, test=develop
* fix compilation warning, update merge_ids_op split_ids_op to new interface, test=develop
* modify fused_bn_activation_op, test=develop
* fix error of fused_bn_activation_op, test=develop
* fix PADDLE_ENFORCE and unittest coverage issue, test=develop
* tweak PADDLE_ENFORCE messages, test=develop
* improve unittest coverage, test=develop
* add StaticGraphInferVarType class, test=develop
* rebase develop branch, test=develop
* fix unittest error, test=develop
* remove comments, test=develop
* improve unittest coverage, test=develop
* imporve error message and imporve unittest coverage, test=develop
* upgrade InferVarType API, test=develop
* tweak pyfunc error message, test=develop
* fix compilation conflict - save_combine_op, test=develop
5 years ago
|
|
|
std::unordered_map<std::string, std::string>& GetInputOutputWithSameType()
|
|
|
|
const override {
|
improve efficiency of runtime InferVarType (#22778)
* save InferVarType changes, test=develop
* remove code comments, test=develop
* tweak code, test=develop
* fix compilation warning, update merge_ids_op split_ids_op to new interface, test=develop
* modify fused_bn_activation_op, test=develop
* fix error of fused_bn_activation_op, test=develop
* fix PADDLE_ENFORCE and unittest coverage issue, test=develop
* tweak PADDLE_ENFORCE messages, test=develop
* improve unittest coverage, test=develop
* add StaticGraphInferVarType class, test=develop
* rebase develop branch, test=develop
* fix unittest error, test=develop
* remove comments, test=develop
* improve unittest coverage, test=develop
* imporve error message and imporve unittest coverage, test=develop
* upgrade InferVarType API, test=develop
* tweak pyfunc error message, test=develop
* fix compilation conflict - save_combine_op, test=develop
5 years ago
|
|
|
static std::unordered_map<std::string, std::string> m{{"X", /*->*/ "Out"}};
|
|
|
|
return m;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class ActivationOpGrad : public framework::OperatorWithKernel {
|
|
|
|
public:
|
|
|
|
using framework::OperatorWithKernel::OperatorWithKernel;
|
|
|
|
|
|
|
|
void InferShape(framework::InferShapeContext* ctx) const override {
|
|
|
|
auto out_grad_name = framework::GradVarName("Out");
|
|
|
|
ctx->ShareDim(out_grad_name, framework::GradVarName("X"));
|
|
|
|
ctx->ShareLoD(out_grad_name, framework::GradVarName("X"));
|
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
framework::OpKernelType GetExpectedKernelType(
|
|
|
|
const framework::ExecutionContext& ctx) const override {
|
|
|
|
return GetKernelType(ctx, *this, framework::GradVarName("Out"));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
UNUSED constexpr char SigmoidDoc[] = R"DOC(
|
|
|
|
Sigmoid Activation Operator
|
|
|
|
|
|
|
|
$$out = \\frac{1}{1 + e^{-x}}$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char LogSigmoidDoc[] = R"DOC(
|
|
|
|
Logsigmoid Activation Operator
|
|
|
|
|
|
|
|
$$out = \\log \\frac{1}{1 + e^{-x}}$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char ExpDoc[] = R"DOC(
|
|
|
|
Exp Operator. Computes exp of x element-wise with a natural number :math:`e` as the base.
|
|
|
|
|
|
|
|
$$out = e^x$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char ReluDoc[] = R"DOC(
|
|
|
|
Relu Activation Operator.
|
|
|
|
|
|
|
|
$$out = \max(x, 0)$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char TanhDoc[] = R"DOC(
|
|
|
|
Tanh Activation Operator.
|
|
|
|
|
|
|
|
$$out = \\frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char TanhShrinkDoc[] = R"DOC(
|
|
|
|
TanhShrink Activation Operator.
|
|
|
|
|
|
|
|
$$out = x - \\frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char SqrtDoc[] = R"DOC(
|
|
|
|
Sqrt Activation Operator.
|
|
|
|
|
|
|
|
.. math:: out=\sqrt x=x^{1/2}
|
|
|
|
|
|
|
|
**Note**:
|
|
|
|
input value must be greater than or equal to zero.
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char RsqrtDoc[] = R"DOC(
|
|
|
|
Rsqrt Activation Operator.
|
|
|
|
|
|
|
|
Please make sure input is legal in case of numeric errors.
|
|
|
|
|
|
|
|
$$out = \frac{1}{\sqrt{x}}$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char AbsDoc[] = R"DOC(
|
|
|
|
Abs Activation Operator.
|
|
|
|
|
|
|
|
$$out = |x|$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char CeilDoc[] = R"DOC(
|
|
|
|
Ceil Operator. Computes ceil of x element-wise.
|
|
|
|
|
|
|
|
$$out = \left \lceil x \right \rceil$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char FloorDoc[] = R"DOC(
|
|
|
|
Floor Activation Operator.
|
|
|
|
|
|
|
|
$$out = \left \lfloor x \right \rfloor$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char CosDoc[] = R"DOC(
|
|
|
|
Cosine Operator. Computes cosine of x element-wise.
|
|
|
|
|
|
|
|
$$out = cos(x)$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char SinDoc[] = R"DOC(
|
|
|
|
Sine Activation Operator.
|
|
|
|
|
|
|
|
$$out = sin(x)$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char RoundDoc[] = R"DOC(
|
|
|
|
The OP rounds the values in the input to the nearest integer value.
|
|
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
input:
|
|
|
|
x.shape = [4]
|
|
|
|
x.data = [1.2, -0.9, 3.4, 0.9]
|
|
|
|
|
|
|
|
output:
|
|
|
|
out.shape = [4]
|
|
|
|
out.data = [1., -1., 3., 1.]
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char ReciprocalDoc[] = R"DOC(
|
|
|
|
Reciprocal Activation Operator.
|
|
|
|
|
|
|
|
$$out = \\frac{1}{x}$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char LogDoc[] = R"DOC(
|
|
|
|
Log Activation Operator.
|
|
|
|
|
|
|
|
$$out = \ln(x)$$
|
|
|
|
|
|
|
|
Natural logarithm of x.
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char Log1pDoc[] = R"DOC(
|
|
|
|
Log Activation Operator.
|
|
|
|
|
|
|
|
$out = \ln(x+1)$
|
|
|
|
|
|
|
|
Natural logarithm of x.
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char SquareDoc[] = R"DOC(
|
|
|
|
The OP square each elements of the inputs.
|
|
|
|
|
|
|
|
$$out = x^2$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char SoftplusDoc[] = R"DOC(
|
|
|
|
Softplus Activation Operator.
|
|
|
|
|
|
|
|
$$out = \ln(1 + e^{x})$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
UNUSED constexpr char SoftsignDoc[] = R"DOC(
|
|
|
|
Softsign Activation Operator.
|
|
|
|
|
|
|
|
$$out = \\frac{x}{1 + \|x\|}$$
|
|
|
|
|
|
|
|
)DOC";
|
|
|
|
|
|
|
|
class AcosOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X", "Input of acos operator");
|
|
|
|
AddOutput("Out", "Output of acos operator");
|
|
|
|
AddComment(R"DOC(
|
|
|
|
Arccosine Activation Operator.
|
|
|
|
|
|
|
|
$$out = \cos^{-1}(x)$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class AsinOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X", "Input of asin operator");
|
|
|
|
AddOutput("Out", "Output of asin operator");
|
|
|
|
AddComment(R"DOC(
|
|
|
|
Arcsine Activation Operator.
|
|
|
|
|
|
|
|
$$out = \sin^{-1}(x)$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class AtanOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X", "Input of atan operator");
|
|
|
|
AddOutput("Out", "Output of atan operator");
|
|
|
|
AddComment(R"DOC(
|
|
|
|
Arctanh Activation Operator.
|
|
|
|
|
|
|
|
$$out = \tanh^{-1}(x)$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class LeakyReluOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X",
|
|
|
|
"A LoDTensor or Tensor representing preactivation values. Must be "
|
|
|
|
"one of the following types: float32, float64.");
|
|
|
|
AddOutput(
|
|
|
|
"Out",
|
|
|
|
"A LoDTensor or Tensor with the same type and size as that of x.");
|
|
|
|
AddAttr<float>("alpha", "Slope of the activation function at x < 0.")
|
|
|
|
.SetDefault(0.02f);
|
|
|
|
AddAttr<bool>("use_mkldnn",
|
|
|
|
"(bool, default false) Only used in mkldnn kernel")
|
|
|
|
.SetDefault(false);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
LeakyRelu Activation Operator.
|
|
|
|
|
|
|
|
$$out = \max(x, \alpha * x)$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class SoftShrinkOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X", "Input of Softshrink operator");
|
|
|
|
AddOutput("Out", "Output of Softshrink operator");
|
|
|
|
AddAttr<float>("lambda", "non-negative offset").SetDefault(0.5f);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
:strong:`Softshrink Activation Operator`
|
|
|
|
|
|
|
|
.. math::
|
|
|
|
out = \begin{cases}
|
|
|
|
x - \lambda, \text{if } x > \lambda \\
|
|
|
|
x + \lambda, \text{if } x < -\lambda \\
|
|
|
|
0, \text{otherwise}
|
|
|
|
\end{cases}
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class HardShrinkOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X", "Input of HardShrink operator");
|
|
|
|
AddOutput("Out", "Output of HardShrink operator");
|
|
|
|
AddAttr<float>("threshold",
|
|
|
|
"The value of threshold for HardShrink. [default: 0.5]")
|
|
|
|
.SetDefault(0.5f);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
:strong:`HardShrink activation operator`
|
|
|
|
|
|
|
|
.. math::
|
|
|
|
out = \begin{cases}
|
|
|
|
x, \text{if } x > \lambda \\
|
|
|
|
x, \text{if } x < -\lambda \\
|
|
|
|
0, \text{otherwise}
|
|
|
|
\end{cases}
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class BReluOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X",
|
|
|
|
"The input is a multi-dimensional Tensor. The data type is "
|
|
|
|
"float32, float64.");
|
|
|
|
AddOutput("Out",
|
|
|
|
"The output is a multi-dimensional Tensor which has same "
|
|
|
|
"dimension and data type as the ``X``.");
|
|
|
|
AddAttr<float>("t_min", "The min marginal value of BRelu")
|
|
|
|
.SetDefault(static_cast<float>(0));
|
|
|
|
AddAttr<float>("t_max", "The max marginal value of BRelu")
|
|
|
|
.SetDefault(static_cast<float>(24));
|
|
|
|
AddComment(R"DOC(
|
|
|
|
BRelu Activation Operator.
|
|
|
|
|
|
|
|
$$out = \min(\max(x, t_{min}), t_{max})$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class SoftReluOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X", "Input of SoftRelu operator");
|
|
|
|
AddOutput("Out", "Output of SoftRelu operator");
|
|
|
|
AddAttr<float>("threshold", "The threshold value of SoftRelu")
|
|
|
|
.SetDefault(40.0f);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
SoftRelu Activation Operator.
|
|
|
|
|
|
|
|
$$out = \ln(1 + \exp(\max(\min(x, threshold), -threshold)))$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class ELUOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X",
|
|
|
|
"The input is a multi-dimensional Tensor. The data type is "
|
|
|
|
"float32 or float64.");
|
|
|
|
AddOutput("Out",
|
|
|
|
"The output is a multi-dimensional Tensor which has same "
|
|
|
|
"dimension and data type as the ``x``.");
|
|
|
|
AddAttr<float>("alpha", "The alpha value of ELU").SetDefault(1.0f);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
ELU Activation Operator.
|
|
|
|
|
|
|
|
Applies the following element-wise computation on the input according to
|
|
|
|
https://arxiv.org/abs/1511.07289.
|
|
|
|
|
|
|
|
$$out = \max(0, x) + \min(0, \alpha * (e^x - 1))$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class Relu6OpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X",
|
|
|
|
"Input of relu6 operator, an N-D Tensor, "
|
|
|
|
"with data type float32, float64.");
|
|
|
|
AddOutput(
|
|
|
|
"Out",
|
|
|
|
"Output of relu6 operator, a Tensor with the same shape as input.");
|
|
|
|
AddAttr<float>("threshold",
|
|
|
|
"The threshold value of Relu6. Default is 6.0. ")
|
|
|
|
.SetDefault(6.0f);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
Relu6 Activation Operator.
|
|
|
|
|
|
|
|
$$out = \min(\max(0, x), threshold)$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class PowOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X", "Input of Pow operator");
|
|
|
|
AddInput("FactorTensor",
|
|
|
|
"(Tensor<float>, optional). If provided, pow will use this"
|
|
|
|
"The shape of FactorTensor MUST BE [1]."
|
|
|
|
"it has higher priority than attr(factor).")
|
|
|
|
.AsDispensable();
|
|
|
|
AddOutput("Out", "Output of Pow operator");
|
|
|
|
AddAttr<float>("factor", "The exponential factor of Pow").SetDefault(1.0f);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
Pow Activation Operator.
|
|
|
|
|
|
|
|
$$out = x^{factor}$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class STanhOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
fix API doc, solve conflict, test=develop, test=document_fix (#20196)
* fix APIs,test=develop,test=document_fix
* fix conflict, test=develop, test=document_fix
* fix confict, test=develop, test=document_fix
* fix confict, test=develop, test=document_fix
* fix API.spec, test=develop, test=document_fix
* change fluid.layers.data to fluid.data,test=develop, test=document_fix
* fix bug on example code, test=develop, test=document_fix
* fix API.spec, test=develop, test=document_fix
5 years ago
|
|
|
AddInput("X",
|
|
|
|
"Input of STanh operator."
|
|
|
|
" A LoDTensor or Tensor with type float32, float64.");
|
|
|
|
AddOutput("Out", "Output of STanh operator. A Tensor with type float32.");
|
|
|
|
AddAttr<float>("scale_a", "The scale parameter of a for the input. ")
|
|
|
|
.SetDefault(0.67f);
|
|
|
|
AddAttr<float>("scale_b", "The scale parameter of b for the input")
|
|
|
|
.SetDefault(1.7159f);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
STanh Activation Operator.
|
|
|
|
|
|
|
|
$$out = b * \\frac{e^{a * x} - e^{-a * x}}{e^{a * x} + e^{-a * x}}$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class ThresholdedReluOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X", "Input of ThresholdedRelu operator");
|
|
|
|
AddOutput("Out", "Output of ThresholdedRelu operator");
|
|
|
|
AddAttr<float>("threshold",
|
|
|
|
"The threshold location of activation. [default 1.0].")
|
|
|
|
.SetDefault(1.0f);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
:strong:`ThresholdedRelu activation operator`
|
|
|
|
|
|
|
|
.. math::
|
|
|
|
|
|
|
|
out = \begin{cases}
|
|
|
|
x, \text{if } x > threshold \\
|
|
|
|
0, \text{otherwise}
|
|
|
|
\end{cases}
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class HardSigmoidOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X", "An N-D Tensor with data type float32, float64. ");
|
|
|
|
AddOutput("Out", "A Tensor with the same shape as input. ");
|
|
|
|
AddAttr<float>("slope",
|
|
|
|
"The slope of the linear approximation of sigmoid. Its "
|
|
|
|
"value MUST BE positive. Default is 0.2. ")
|
|
|
|
.SetDefault(0.2f);
|
|
|
|
AddAttr<float>(
|
|
|
|
"offset",
|
|
|
|
"The offset of the linear approximation of sigmoid. Default is 0.5. ")
|
|
|
|
.SetDefault(0.5f);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
HardSigmoid Activation Operator.
|
|
|
|
|
|
|
|
A 3-part piecewise linear approximation of sigmoid(https://arxiv.org/abs/1603.00391),
|
|
|
|
which is much faster than sigmoid.
|
|
|
|
|
|
|
|
$$out = \max(0, \min(1, slope * x + offset))$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class SwishOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X", "Input of Swish operator");
|
|
|
|
AddOutput("Out", "Output of Swish operator");
|
|
|
|
AddAttr<float>("beta", "Constant beta of swish operator").SetDefault(1.0f);
|
|
|
|
AddAttr<bool>("use_mkldnn",
|
|
|
|
"(bool, default false) Only used in mkldnn kernel")
|
|
|
|
.SetDefault(false);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
Swish Activation Operator.
|
|
|
|
|
|
|
|
$$out = \\frac{x}{1 + e^{- \beta \ x}}$$
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class HardSwishOpMaker : public framework::OpProtoAndCheckerMaker {
|
|
|
|
public:
|
|
|
|
void Make() override {
|
|
|
|
AddInput("X", "Input of HardSwish operator");
|
|
|
|
AddOutput("Out", "Output of HardSwish operator");
|
|
|
|
AddAttr<float>("threshold", "The threshold parameter of HardSwish operator")
|
|
|
|
.SetDefault(6.0f);
|
|
|
|
AddAttr<float>("scale", "The scale parameter of HardSwish operator")
|
|
|
|
.SetDefault(6.0f);
|
|
|
|
AddAttr<float>("offset", "The offset parameter of HardSwish operator")
|
|
|
|
.SetDefault(3.0f);
|
|
|
|
AddComment(R"DOC(
|
|
|
|
HardSwish Activation Operator.
|
|
|
|
|
|
|
|
The hard version of swish(https://arxiv.org/pdf/1905.02244.pdf).
|
|
|
|
|
|
|
|
$$out = \frac{x * (min(max(0, x+offset), threshold))}{scale}$$
|
|
|
|
|
|
|
|
The threshold and scale should be positive. The offset can be either positive or negative.
|
|
|
|
The default parameters are set according to the above reference.
|
|
|
|
It is recommended to use the defaults for this activation.
|
|
|
|
|
|
|
|
)DOC");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Sigmoid, SigmoidDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(LogSigmoid, LogSigmoidDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Exp, ExpDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Relu, ReluDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Tanh, TanhDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(TanhShrink, TanhShrinkDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Sqrt, SqrtDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Rsqrt, RsqrtDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Abs, AbsDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Ceil, CeilDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Floor, FloorDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Cos, CosDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Sin, SinDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Round, RoundDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Reciprocal, ReciprocalDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Log, LogDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Log1p, Log1pDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Square, SquareDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Softplus, SoftplusDoc);
|
|
|
|
REGISTER_ACTIVATION_OP_MAKER(Softsign, SoftsignDoc);
|
|
|
|
|
|
|
|
template <ActBwdOpFwdDeps kDepValue>
|
|
|
|
class ActivationOpDoubleGrad : public framework::OperatorWithKernel {
|
|
|
|
public:
|
|
|
|
using framework::OperatorWithKernel::OperatorWithKernel;
|
|
|
|
|
|
|
|
void InferShape(framework::InferShapeContext* ctx) const override {
|
|
|
|
if (static_cast<int>(kDepValue) & static_cast<int>(kDepX)) {
|
|
|
|
if (ctx->HasOutput("DX")) {
|
|
|
|
ctx->ShareDim("X", "DX");
|
|
|
|
ctx->ShareLoD("X", "DX");
|
|
|
|
}
|
|
|
|
if (ctx->HasOutput("DDOut")) {
|
|
|
|
ctx->ShareDim("X", "DDOut");
|
|
|
|
ctx->ShareLoD("X", "DDOut");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (static_cast<int>(kDepValue) & static_cast<int>(kDepOut)) {
|
|
|
|
if (ctx->HasOutput("DOut")) {
|
|
|
|
ctx->ShareDim("Out", "DOut");
|
|
|
|
ctx->ShareLoD("Out", "DOut");
|
|
|
|
}
|
|
|
|
if (ctx->HasOutput("DDOut")) {
|
|
|
|
ctx->ShareDim("Out", "DDOut");
|
|
|
|
ctx->ShareLoD("Out", "DDOut");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
framework::OpKernelType GetExpectedKernelType(
|
|
|
|
const framework::ExecutionContext& ctx) const override {
|
|
|
|
return GetKernelType(ctx, *this, "DDX");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <ActBwdOpFwdDeps kDepValue>
|
|
|
|
class ActivationOpDoubleGrad2 : public framework::OperatorWithKernel {
|
|
|
|
public:
|
|
|
|
using framework::OperatorWithKernel::OperatorWithKernel;
|
|
|
|
|
|
|
|
void InferShape(framework::InferShapeContext* ctx) const override {
|
|
|
|
if (static_cast<int>(kDepValue) & static_cast<int>(kDepX)) {
|
|
|
|
if (ctx->HasOutput("DDOut")) {
|
|
|
|
ctx->ShareDim("X", "DDOut");
|
|
|
|
ctx->ShareLoD("X", "DDOut");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (static_cast<int>(kDepValue) & static_cast<int>(kDepOut)) {
|
|
|
|
if (ctx->HasOutput("DDOut")) {
|
|
|
|
ctx->ShareDim("Out", "DDOut");
|
|
|
|
ctx->ShareLoD("Out", "DDOut");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
framework::OpKernelType GetExpectedKernelType(
|
|
|
|
const framework::ExecutionContext& ctx) const override {
|
|
|
|
return GetKernelType(ctx, *this, "DDX");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
//
|
|
|
|
// ReluGrad: dx = dy if y >= 0 else 0
|
|
|
|
// ReluGradGrad: ddy = ddx if y >= 0 else 0
|
|
|
|
//
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
template <typename T>
|
|
|
|
class ReluDoubleGradMaker : public ::paddle::framework::SingleGradOpMaker<T> {
|
|
|
|
public:
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
using ::paddle::framework::SingleGradOpMaker<T>::SingleGradOpMaker;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void Apply(GradOpPtr<T> op) const override {
|
|
|
|
op->SetType("relu_grad_grad");
|
|
|
|
// input1: Out
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetInput("Out", this->Input("Out"));
|
|
|
|
// input2: ddx
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetInput("DDX", this->OutputGrad(framework::GradVarName("X")));
|
|
|
|
op->SetAttrMap(this->Attrs());
|
|
|
|
// output: ddy
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetOutput("DDOut", this->InputGrad(framework::GradVarName("Out")));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// leaky_relu Grad: dx=dy if y>=0 else alpha * dy
|
|
|
|
// leaky_relu GradGrad: ddy=ddx if y>=0 else alpha * ddx
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
template <typename T>
|
|
|
|
class LeakyReluDoubleGradMaker
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
: public ::paddle::framework::SingleGradOpMaker<T> {
|
|
|
|
public:
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
using ::paddle::framework::SingleGradOpMaker<T>::SingleGradOpMaker;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void Apply(GradOpPtr<T> op) const override {
|
|
|
|
op->SetType("leaky_relu_grad_grad");
|
|
|
|
// input1: Out
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetInput("Out", this->Input("Out"));
|
|
|
|
// X@GRAD@GRAD: ddx
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetInput("DDX", this->OutputGrad(framework::GradVarName("X")));
|
|
|
|
op->SetAttrMap(this->Attrs());
|
|
|
|
// Out@GRAD@GRAD: ddy
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetOutput("DDOut", this->InputGrad(framework::GradVarName("Out")));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// elu grad: dx=dy if y>0 else alpha*dy*x.exp()
|
|
|
|
// elu gradgrad: ddx=ddy if y>0 else alpha*ddy*x.exp()
|
|
|
|
template <typename T>
|
|
|
|
class ELUDoubleGradMaker : public ::paddle::framework::SingleGradOpMaker<T> {
|
|
|
|
public:
|
|
|
|
using ::paddle::framework::SingleGradOpMaker<T>::SingleGradOpMaker;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void Apply(GradOpPtr<T> op) const override {
|
|
|
|
op->SetType("elu_grad_grad");
|
|
|
|
|
|
|
|
op->SetInput("X", this->Input("X"));
|
|
|
|
op->SetInput("DOut", this->Input(framework::GradVarName("Out")));
|
|
|
|
// X@GRAD@GRAD: ddx
|
|
|
|
op->SetInput("DDX", this->OutputGrad(framework::GradVarName("X")));
|
|
|
|
op->SetAttrMap(this->Attrs());
|
|
|
|
|
|
|
|
// Out@GRAD@GRAD: ddy
|
|
|
|
op->SetOutput("DX", this->InputGrad("X"));
|
|
|
|
op->SetOutput("DDOut", this->InputGrad(framework::GradVarName("Out")));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// sqrt Grad: dx = 0.5 * dy / y
|
|
|
|
// sqrt GradGrad: ddy = 0.5 * ddx / y, dy = -1 * dx * ddx
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
template <typename T>
|
|
|
|
class SqrtDoubleGradMaker : public ::paddle::framework::SingleGradOpMaker<T> {
|
|
|
|
public:
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
using ::paddle::framework::SingleGradOpMaker<T>::SingleGradOpMaker;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void Apply(GradOpPtr<T> op) const override {
|
|
|
|
op->SetType("sqrt_grad_grad");
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetInput("Out", this->Input("Out"));
|
|
|
|
op->SetInput("DX", this->Output(framework::GradVarName("X")));
|
|
|
|
op->SetInput("DDX", this->OutputGrad(framework::GradVarName("X")));
|
|
|
|
op->SetAttrMap(this->Attrs());
|
|
|
|
op->SetOutput("DOut", this->InputGrad("Out"));
|
|
|
|
op->SetOutput("DDOut", this->InputGrad(framework::GradVarName("Out")));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// square Grad: dx=2x*dy
|
|
|
|
// square GradGrad: ddy=2x*ddx, dx=2dy*ddx
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
template <typename T>
|
|
|
|
class SquareDoubleGradMaker : public ::paddle::framework::SingleGradOpMaker<T> {
|
|
|
|
public:
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
using ::paddle::framework::SingleGradOpMaker<T>::SingleGradOpMaker;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void Apply(GradOpPtr<T> op) const override {
|
|
|
|
op->SetType("square_grad_grad");
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetInput("X", this->Input("X"));
|
|
|
|
// Out@GRAD: dy
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetInput("DOut", this->Input(framework::GradVarName("Out")));
|
|
|
|
// X@GRAD@GRAD: ddx
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetInput("DDX", this->OutputGrad(framework::GradVarName("X")));
|
|
|
|
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetAttrMap(this->Attrs());
|
|
|
|
|
|
|
|
// X@GRAD: dx
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetOutput("DX", this->InputGrad("X"));
|
|
|
|
// Out@GRAD@GRAD: ddy
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetOutput("DDOut", this->InputGrad(framework::GradVarName("Out")));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
DECLARE_INPLACE_OP_INFERER(ActivationGradOpInplaceInferer,
|
|
|
|
{framework::GradVarName("Out"),
|
|
|
|
framework::GradVarName("X")});
|
|
|
|
DECLARE_INPLACE_OP_INFERER(ActivationDoubleGradOpInplaceInferer,
|
|
|
|
{"DDX", "DDOut"});
|
Feature/buffer_shared_inplace (#17911)
* feature/buffer_shared_inplace, test=develop
* refine code, test=develop
* fix elementwise_add op cpu inplace and sum inplace bug, test=develop
* add unittest and debug log, test=develop
* fix parallel_executor scope bug, polish code, test=develop
* fix sum op, activation op, single_in_place_inference bug, test=develop
* remove kLocalExecScopeName, test=develop
* fix unittest,test=develop
* fix out_var first version bug, test=develop
* follow comments,test=develop
6 years ago
|
|
|
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
template <typename T>
|
|
|
|
class PowGradOpMaker : public framework::SingleGradOpMaker<T> {
|
|
|
|
public:
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
using framework::SingleGradOpMaker<T>::SingleGradOpMaker;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void Apply(GradOpPtr<T> op) const override {
|
|
|
|
op->SetType("pow_grad");
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
op->SetInput("X", this->Input("X"));
|
|
|
|
op->SetInput(framework::GradVarName("Out"), this->OutputGrad("Out"));
|
|
|
|
op->SetOutput(framework::GradVarName("X"), this->InputGrad("X"));
|
|
|
|
op->SetInput("FactorTensor", this->Input("FactorTensor"));
|
|
|
|
op->SetAttrMap(this->Attrs());
|
|
|
|
}
|
|
|
|
};
|
|
|
|
class PowOp : public framework::OperatorWithKernel {
|
|
|
|
public:
|
|
|
|
using framework::OperatorWithKernel::OperatorWithKernel;
|
|
|
|
|
|
|
|
void InferShape(framework::InferShapeContext* ctx) const override {
|
|
|
|
ctx->ShareDim("X", /*->*/ "Out");
|
|
|
|
ctx->ShareLoD("X", /*->*/ "Out");
|
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
framework::OpKernelType GetExpectedKernelType(
|
|
|
|
const framework::ExecutionContext& ctx) const override {
|
|
|
|
return GetKernelType(ctx, *this, "X");
|
|
|
|
}
|
|
|
|
|
|
|
|
framework::OpKernelType GetKernelTypeForVar(
|
|
|
|
const std::string& var_name, const Tensor& tensor,
|
|
|
|
const framework::OpKernelType& expected_kernel_type) const override {
|
|
|
|
if (var_name == "FactorTensor") {
|
|
|
|
return expected_kernel_type;
|
|
|
|
}
|
|
|
|
return framework::OpKernelType(expected_kernel_type.data_type_,
|
|
|
|
tensor.place(), tensor.layout());
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class PowOpGrad : public framework::OperatorWithKernel {
|
|
|
|
public:
|
|
|
|
using framework::OperatorWithKernel::OperatorWithKernel;
|
|
|
|
|
|
|
|
void InferShape(framework::InferShapeContext* ctx) const override {
|
|
|
|
auto out_grad_name = framework::GradVarName("Out");
|
|
|
|
ctx->ShareDim(out_grad_name, framework::GradVarName("X"));
|
|
|
|
ctx->ShareLoD(out_grad_name, framework::GradVarName("X"));
|
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
framework::OpKernelType GetExpectedKernelType(
|
|
|
|
const framework::ExecutionContext& ctx) const override {
|
|
|
|
return GetKernelType(ctx, *this, framework::GradVarName("Out"));
|
|
|
|
}
|
|
|
|
|
|
|
|
framework::OpKernelType GetKernelTypeForVar(
|
|
|
|
const std::string& var_name, const Tensor& tensor,
|
|
|
|
const framework::OpKernelType& expected_kernel_type) const override {
|
|
|
|
if (var_name == "FactorTensor") {
|
|
|
|
return expected_kernel_type;
|
|
|
|
}
|
|
|
|
return framework::OpKernelType(expected_kernel_type.data_type_,
|
|
|
|
tensor.place(), tensor.layout());
|
|
|
|
}
|
|
|
|
};
|
|
|
|
DECLARE_INPLACE_OP_INFERER(ActFwdInplaceInferer, {"X", "Out"});
|
|
|
|
} // namespace operators
|
|
|
|
} // namespace paddle
|
|
|
|
|
|
|
|
namespace ops = paddle::operators;
|
|
|
|
namespace plat = paddle::platform;
|
|
|
|
|
|
|
|
#define REGISTER_ACTIVATION_OP(KERNEL_TYPE, OP_NAME, functor, grad_functor) \
|
|
|
|
REGISTER_OPERATOR( \
|
|
|
|
KERNEL_TYPE, ops::ActivationOp, ops::OP_NAME##OpMaker, \
|
|
|
|
ops::ActivationOpInferVarType, \
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
ops::ActivationGradOpMaker<ops::grad_functor<float>::FwdDeps(), \
|
|
|
|
paddle::framework::OpDesc>, \
|
|
|
|
ops::ActivationGradOpMaker<ops::grad_functor<float>::FwdDeps(), \
|
|
|
|
paddle::imperative::OpBase>, \
|
|
|
|
std::conditional<ops::CanInplaceAct<ops::grad_functor<float>>(), \
|
|
|
|
ops::ActFwdInplaceInferer, void>::type); \
|
Feature/buffer_shared_inplace (#17911)
* feature/buffer_shared_inplace, test=develop
* refine code, test=develop
* fix elementwise_add op cpu inplace and sum inplace bug, test=develop
* add unittest and debug log, test=develop
* fix parallel_executor scope bug, polish code, test=develop
* fix sum op, activation op, single_in_place_inference bug, test=develop
* remove kLocalExecScopeName, test=develop
* fix unittest,test=develop
* fix out_var first version bug, test=develop
* follow comments,test=develop
6 years ago
|
|
|
REGISTER_OPERATOR(KERNEL_TYPE##_grad, ops::ActivationOpGrad, \
|
|
|
|
ops::ActivationGradOpInplaceInferer);
|
|
|
|
|
|
|
|
#define REGISTER_ACTIVATION_CPU_KERNEL(act_type, op_name, functor, \
|
|
|
|
grad_functor) \
|
|
|
|
REGISTER_OP_CPU_KERNEL( \
|
|
|
|
act_type, ops::ActivationKernel<paddle::platform::CPUDeviceContext, \
|
|
|
|
ops::functor<float>>, \
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext, \
|
|
|
|
ops::functor<double>>); \
|
|
|
|
REGISTER_OP_CPU_KERNEL( \
|
|
|
|
act_type##_grad, \
|
|
|
|
ops::ActivationGradKernel<paddle::platform::CPUDeviceContext, \
|
|
|
|
ops::grad_functor<float>>, \
|
|
|
|
ops::ActivationGradKernel<paddle::platform::CPUDeviceContext, \
|
|
|
|
ops::grad_functor<double>>);
|
|
|
|
|
|
|
|
FOR_EACH_ACTIVATION_OP(REGISTER_ACTIVATION_OP);
|
|
|
|
FOR_EACH_ACTIVATION_OP(REGISTER_ACTIVATION_CPU_KERNEL);
|
|
|
|
|
|
|
|
/* ========================== relu register ============================= */
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
relu, ops::ActivationOp, ops::ReluOpMaker, ops::ActivationOpInferVarType,
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
ops::ActivationGradOpMaker<ops::ReluGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::framework::OpDesc>,
|
|
|
|
ops::ActivationGradOpMaker<ops::ReluGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::imperative::OpBase>,
|
|
|
|
ops::ActFwdInplaceInferer);
|
|
|
|
REGISTER_OPERATOR(relu_grad, ops::ActivationOpGrad,
|
|
|
|
ops::ActivationGradOpInplaceInferer,
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
ops::ReluDoubleGradMaker<paddle::framework::OpDesc>,
|
|
|
|
ops::ReluDoubleGradMaker<paddle::imperative::OpBase>);
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
relu_grad_grad,
|
|
|
|
ops::ActivationOpDoubleGrad2<ops::ReluGradFunctor<float>::FwdDeps()>,
|
|
|
|
ops::ActivationDoubleGradOpInplaceInferer);
|
|
|
|
|
|
|
|
REGISTER_ACTIVATION_CPU_KERNEL(relu, Relu, ReluFunctor, ReluGradFunctor);
|
|
|
|
|
|
|
|
REGISTER_OP_CPU_KERNEL(
|
|
|
|
relu_grad_grad,
|
|
|
|
ops::ActivationDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::ReluGradGradFunctor<float>>,
|
|
|
|
ops::ActivationDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::ReluGradGradFunctor<double>>,
|
|
|
|
ops::ActivationDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::ReluGradGradFunctor<plat::float16>>);
|
|
|
|
/* ========================================================================== */
|
|
|
|
|
|
|
|
/* ======================== leaky relu register ============================ */
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
leaky_relu, ops::ActivationOp, ops::LeakyReluOpMaker,
|
|
|
|
ops::ActivationOpInferVarType,
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
ops::ActivationGradOpMaker<ops::LeakyReluGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::framework::OpDesc>,
|
|
|
|
ops::ActivationGradOpMaker<ops::LeakyReluGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::imperative::OpBase>,
|
|
|
|
ops::ActFwdInplaceInferer);
|
|
|
|
REGISTER_OPERATOR(leaky_relu_grad, ops::ActivationOpGrad,
|
|
|
|
ops::ActivationGradOpInplaceInferer,
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
ops::LeakyReluDoubleGradMaker<paddle::framework::OpDesc>,
|
|
|
|
ops::LeakyReluDoubleGradMaker<paddle::imperative::OpBase>);
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
leaky_relu_grad_grad,
|
|
|
|
ops::ActivationOpDoubleGrad2<ops::LeakyReluGradFunctor<float>::FwdDeps()>,
|
|
|
|
ops::ActivationDoubleGradOpInplaceInferer);
|
|
|
|
|
|
|
|
REGISTER_ACTIVATION_CPU_KERNEL(leaky_relu, LeakyRelu, LeakyReluFunctor,
|
|
|
|
LeakyReluGradFunctor);
|
|
|
|
REGISTER_OP_CPU_KERNEL(
|
|
|
|
leaky_relu_grad_grad,
|
|
|
|
ops::ActivationDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::LeakyReluGradGradFunctor<float>>,
|
|
|
|
ops::ActivationDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::LeakyReluGradGradFunctor<double>>,
|
|
|
|
ops::ActivationDoubleGradKernel<
|
|
|
|
plat::CPUDeviceContext, ops::LeakyReluGradGradFunctor<plat::float16>>);
|
|
|
|
/* ========================================================================== */
|
|
|
|
|
|
|
|
/* ======================== elu register ============================ */
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
elu, ops::ActivationOp, ops::ELUOpMaker, ops::ActivationOpInferVarType,
|
|
|
|
ops::ActivationGradOpMaker<ops::ELUGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::framework::OpDesc>,
|
|
|
|
ops::ActivationGradOpMaker<ops::ELUGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::imperative::OpBase>,
|
|
|
|
ops::ActFwdInplaceInferer);
|
|
|
|
REGISTER_OPERATOR(elu_grad, ops::ActivationOpGrad,
|
|
|
|
ops::ActivationGradOpInplaceInferer,
|
|
|
|
ops::ELUDoubleGradMaker<paddle::framework::OpDesc>,
|
|
|
|
ops::ELUDoubleGradMaker<paddle::imperative::OpBase>);
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
elu_grad_grad,
|
|
|
|
ops::ActivationOpDoubleGrad<ops::ELUGradFunctor<float>::FwdDeps()>,
|
|
|
|
ops::ActivationDoubleGradOpInplaceInferer);
|
|
|
|
|
|
|
|
REGISTER_ACTIVATION_CPU_KERNEL(elu, ELU, ELUFunctor, ELUGradFunctor);
|
|
|
|
REGISTER_OP_CPU_KERNEL(
|
|
|
|
elu_grad_grad, ops::ELUDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::ELUGradGradFunctor<float>>,
|
|
|
|
ops::ELUDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::ELUGradGradFunctor<double>>,
|
|
|
|
ops::ELUDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::ELUGradGradFunctor<plat::float16>>);
|
|
|
|
|
|
|
|
/* ========================================================================== */
|
|
|
|
|
|
|
|
/* =========================== sqrt register ============================= */
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
sqrt, ops::ActivationOp, ops::SqrtOpMaker, ops::ActivationOpInferVarType,
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
ops::ActivationGradOpMaker<ops::SqrtGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::framework::OpDesc>,
|
|
|
|
ops::ActivationGradOpMaker<ops::SqrtGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::imperative::OpBase>,
|
|
|
|
ops::ActFwdInplaceInferer);
|
|
|
|
REGISTER_OPERATOR(sqrt_grad, ops::ActivationOpGrad,
|
|
|
|
ops::ActivationGradOpInplaceInferer,
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
ops::SqrtDoubleGradMaker<paddle::framework::OpDesc>,
|
|
|
|
ops::SqrtDoubleGradMaker<paddle::imperative::OpBase>);
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
sqrt_grad_grad,
|
|
|
|
ops::ActivationOpDoubleGrad<ops::SqrtGradGradFunctor<float>::FwdDeps()>,
|
|
|
|
ops::ActivationDoubleGradOpInplaceInferer);
|
|
|
|
|
|
|
|
REGISTER_ACTIVATION_CPU_KERNEL(sqrt, Sqrt, SqrtFunctor, SqrtGradFunctor);
|
|
|
|
REGISTER_OP_CPU_KERNEL(
|
|
|
|
sqrt_grad_grad, ops::SqrtDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::SqrtGradGradFunctor<float>>,
|
|
|
|
ops::SqrtDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::SqrtGradGradFunctor<double>>,
|
|
|
|
ops::SqrtDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::SqrtGradGradFunctor<plat::float16>>);
|
|
|
|
/* ========================================================================== */
|
|
|
|
|
|
|
|
/* ========================== square register ============================ */
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
square, ops::ActivationOp, ops::SquareOpMaker,
|
|
|
|
ops::ActivationOpInferVarType,
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
ops::ActivationGradOpMaker<ops::SquareGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::framework::OpDesc>,
|
|
|
|
ops::ActivationGradOpMaker<ops::SquareGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::imperative::OpBase>,
|
|
|
|
ops::ActFwdInplaceInferer);
|
|
|
|
REGISTER_OPERATOR(square_grad, ops::ActivationOpGrad,
|
|
|
|
ops::ActivationGradOpInplaceInferer,
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
ops::SquareDoubleGradMaker<paddle::framework::OpDesc>,
|
|
|
|
ops::SquareDoubleGradMaker<paddle::imperative::OpBase>);
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
square_grad_grad,
|
|
|
|
ops::ActivationOpDoubleGrad<ops::SquareGradGradFunctor<float>::FwdDeps()>,
|
|
|
|
ops::ActivationDoubleGradOpInplaceInferer);
|
|
|
|
|
|
|
|
REGISTER_OP_CPU_KERNEL(square,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::SquareFunctor<float>>,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::SquareFunctor<double>>,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::SquareFunctor<int>>,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::SquareFunctor<int64_t>>);
|
|
|
|
REGISTER_OP_CPU_KERNEL(
|
|
|
|
square_grad, ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::SquareGradFunctor<float>>,
|
|
|
|
ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::SquareGradFunctor<double>>,
|
|
|
|
ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::SquareGradFunctor<int>>,
|
|
|
|
ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::SquareGradFunctor<int64_t>>);
|
|
|
|
|
|
|
|
REGISTER_OP_CPU_KERNEL(
|
|
|
|
square_grad_grad,
|
|
|
|
ops::SquareDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::SquareGradGradFunctor<float>>,
|
|
|
|
ops::SquareDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::SquareGradGradFunctor<double>>,
|
|
|
|
ops::SquareDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::SquareGradGradFunctor<plat::float16>>,
|
|
|
|
ops::SquareDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::SquareGradGradFunctor<int>>,
|
|
|
|
ops::SquareDoubleGradKernel<plat::CPUDeviceContext,
|
|
|
|
ops::SquareGradGradFunctor<int64_t>>);
|
|
|
|
/* ========================================================================== */
|
|
|
|
|
|
|
|
/* ========================== pow register ============================ */
|
|
|
|
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
pow, ops::PowOp, ops::PowOpMaker, ops::ActivationOpInferVarType,
|
GradMaker for dygraph (#19706)
* refactor dygraph,test=develop
* fix failed unittest,test=develop
* polish code,test=develop
* check windows ci error,test=develop
try to fix windows ci error by np.allclose,test=develop
* polish vlog and profiler, test=develop
* try to fix preceding ops order,test=develop
* test transformer in windows ci, test=develop
* use python c-api to speed up tracer.trace,test=develop
* test=develop, fix docker with paddle nccl problem
* test=develop, add ut for debug string and gradient_accumulator
* test=develop, add tests for layer/gradient_accumulator/prepared_op
* test=develop, fix complie error for test_prepared_op
* test=develop, add more ut for dygraph
* test=develop, create API.spec for dygraph api change
* optimize grad maker; test=develop
* optimize grad maker
* test
* grad make optim; test=develop
* fix unittest bugs; test=develop
* add dygraph grad op maker and split_op
* grad op maker refactor; test=develop
* add dygraph grad maker; test=develop
* fix op deformable_conv_v1_op bug; test=develop
* fix deformable_conv prroi pool bugs;
* fix new op grad op maker bug; test=develop
* fix split by ref bug; test=develop
* fix dygraph auto prune bug; test=develop
* fix test_trace bug; test=develop
* fix fused emb seq pool bug; test=develop
* remove useless code in op_desc file; test=develop
* remove useless code, StrVarBaseNode; test=develop
* fix review issues; test=develop
* fix rank_loss grad maker; test=develop
* remove flag in VarBase; test=develop
* fix distributed_notify_op compile bug ; test=develop
* fix reshape op double grad; test=develop
* fix expand as op; test=develop
* add impertive type_defs.h for demo_train; test=develop
* fix inference lib cmake; test=develop
* fix inference lib; test=develop
* fix infernce_lib; test=develop
* fix inference cmake; test=develop
* fix inference lib; test=develop
* fix inference lib; test=develop
* remove condition dygraph grad maker, modify local name; test=develop
* fix split grad maker bug; test=develop
* fix pyramid_op bug; test=develop
* change travis time out limit; test=develop
* restore travis; test=develop
* change timeout limit; test=develop
5 years ago
|
|
|
ops::PowGradOpMaker<paddle::framework::OpDesc>,
|
|
|
|
ops::PowGradOpMaker<paddle::imperative::OpBase>,
|
|
|
|
std::conditional<ops::CanInplaceAct<ops::PowGradFunctor<float>>(),
|
|
|
|
ops::ActFwdInplaceInferer, void>::type);
|
|
|
|
REGISTER_OPERATOR(pow_grad, ops::PowOpGrad,
|
|
|
|
ops::ActivationGradOpInplaceInferer);
|
|
|
|
|
|
|
|
REGISTER_OP_CPU_KERNEL(
|
|
|
|
pow, ops::PowKernel<plat::CPUDeviceContext, ops::PowFunctor<float>>,
|
|
|
|
ops::PowKernel<plat::CPUDeviceContext, ops::PowFunctor<double>>,
|
|
|
|
ops::PowKernel<plat::CPUDeviceContext, ops::PowFunctor<int>>,
|
|
|
|
ops::PowKernel<plat::CPUDeviceContext, ops::PowFunctor<int64_t>>);
|
|
|
|
REGISTER_OP_CPU_KERNEL(
|
|
|
|
pow_grad,
|
|
|
|
ops::PowGradKernel<plat::CPUDeviceContext, ops::PowGradFunctor<float>>,
|
|
|
|
ops::PowGradKernel<plat::CPUDeviceContext, ops::PowGradFunctor<double>>,
|
|
|
|
ops::PowGradKernel<plat::CPUDeviceContext, ops::PowGradFunctor<int>>,
|
|
|
|
ops::PowGradKernel<plat::CPUDeviceContext, ops::PowGradFunctor<int64_t>>);
|
|
|
|
/* ========================================================================== */
|
|
|
|
|
|
|
|
/* ========================== exp register ============================ */
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
exp, ops::ActivationOp, ops::ExpOpMaker, ops::ActivationOpInferVarType,
|
|
|
|
ops::ActivationGradOpMaker<ops::ExpGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::framework::OpDesc>,
|
|
|
|
ops::ActivationGradOpMaker<ops::ExpGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::imperative::OpBase>,
|
|
|
|
std::conditional<ops::CanInplaceAct<ops::ExpGradFunctor<float>>(),
|
|
|
|
ops::ActFwdInplaceInferer, void>::type);
|
|
|
|
REGISTER_OPERATOR(exp_grad, ops::ActivationOpGrad,
|
|
|
|
ops::ActivationGradOpInplaceInferer);
|
|
|
|
|
|
|
|
REGISTER_OP_CPU_KERNEL(exp,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::ExpFunctor<float>>,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::ExpFunctor<double>>,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::ExpFunctor<int>>,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::ExpFunctor<int64_t>>);
|
|
|
|
REGISTER_OP_CPU_KERNEL(
|
|
|
|
exp_grad, ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::ExpGradFunctor<float>>,
|
|
|
|
ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::ExpGradFunctor<double>>,
|
|
|
|
ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::ExpGradFunctor<int>>,
|
|
|
|
ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::ExpGradFunctor<int64_t>>);
|
|
|
|
/* ========================================================================== */
|
|
|
|
|
|
|
|
/* ========================== abs register ============================ */
|
|
|
|
REGISTER_OPERATOR(
|
|
|
|
abs, ops::ActivationOp, ops::AbsOpMaker, ops::ActivationOpInferVarType,
|
|
|
|
ops::ActivationGradOpMaker<ops::AbsGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::framework::OpDesc>,
|
|
|
|
ops::ActivationGradOpMaker<ops::AbsGradFunctor<float>::FwdDeps(),
|
|
|
|
paddle::imperative::OpBase>,
|
|
|
|
std::conditional<ops::CanInplaceAct<ops::AbsGradFunctor<float>>(),
|
|
|
|
ops::ActFwdInplaceInferer, void>::type);
|
|
|
|
REGISTER_OPERATOR(abs_grad, ops::ActivationOpGrad,
|
|
|
|
ops::ActivationGradOpInplaceInferer);
|
|
|
|
|
|
|
|
REGISTER_OP_CPU_KERNEL(abs,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::AbsFunctor<float>>,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::AbsFunctor<double>>,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::AbsFunctor<int>>,
|
|
|
|
ops::ActivationKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::AbsFunctor<int64_t>>);
|
|
|
|
REGISTER_OP_CPU_KERNEL(
|
|
|
|
abs_grad, ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::AbsGradFunctor<float>>,
|
|
|
|
ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::AbsGradFunctor<double>>,
|
|
|
|
ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::AbsGradFunctor<int>>,
|
|
|
|
ops::ActivationGradKernel<paddle::platform::CPUDeviceContext,
|
|
|
|
ops::AbsGradFunctor<int64_t>>);
|
|
|
|
/* ========================================================================== */
|