-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【PaddlePaddle Hackathon 2】18、为 Paddle 新增 paddle.heaviside 和 paddle.Tensor.heaviside API #41872
Merged
jeff41404
merged 19 commits into
PaddlePaddle:develop
from
BrilliantYuKaimin:heaviside_3
May 10, 2022
Merged
Changes from 18 commits
Commits
Show all changes
19 commits
Select commit
Hold shift + click to select a range
1e05bf8
Create elementwise_heaviside_op.cc
BrilliantYuKaimin 02c4f1d
add ElementwiseHeavisideFunctor
BrilliantYuKaimin 69592c7
Create test_elementwise_heaviside_op.py
BrilliantYuKaimin bc18bf2
增加heaviside的python接口
BrilliantYuKaimin 3216ded
add heaviside in white list
BrilliantYuKaimin 24c2558
增加heaviside的签名
BrilliantYuKaimin d9db011
增加heaviside的核函数
BrilliantYuKaimin e3dcba1
增加heaviside梯度的核函数
BrilliantYuKaimin 80c44e7
增加heaviside梯度的注册
BrilliantYuKaimin 33fd790
调整代码格式
BrilliantYuKaimin ab72285
Merge branch 'PaddlePaddle:develop' into heaviside_3
BrilliantYuKaimin 8d4cd9b
Update elementwise_sig.cc
BrilliantYuKaimin 65a0fde
add heaviside in __all__
BrilliantYuKaimin 4d6cc60
Merge branch 'develop' into heaviside_3
BrilliantYuKaimin 9aeb5d7
Update heaviside docs
BrilliantYuKaimin c96fe8d
Update math.py
BrilliantYuKaimin 879a591
Update math.py
BrilliantYuKaimin 12ebfdb
Update math.py
BrilliantYuKaimin f271150
Merge branch 'develop' into heaviside_3
BrilliantYuKaimin File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
70 changes: 70 additions & 0 deletions
70
paddle/fluid/operators/elementwise/elementwise_heaviside_op.cc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
// Copyright (c) 2022 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 <string> | ||
#include "paddle/fluid/operators/elementwise/elementwise_op.h" | ||
|
||
namespace paddle { | ||
namespace operators { | ||
|
||
class ElementwiseHeavisideOpMaker : public ElementwiseOpMaker { | ||
protected: | ||
std::string GetName() const override { return "Heaviside"; } | ||
std::string GetEquation() const override { return "Out = Heaviside(X, Y)"; } | ||
|
||
void AddInputX() override { | ||
AddInput("X", | ||
"(Tensor), The input tensor of Heaviside step function. " | ||
"Its dtype can be int32, int64, float32 and float64"); | ||
} | ||
|
||
void AddInputY() override { | ||
AddInput("Y", | ||
"(Tensor), The tensor determining a Heaviside step function, " | ||
"which is the value when X = 0. Its dtype should be same as X."); | ||
} | ||
|
||
std::string GetOpFuntionality() const override { | ||
return "Computes the Heaviside step function determined by Y " | ||
"for each element in X."; | ||
} | ||
}; | ||
|
||
template <typename T> | ||
class ElementwiseHeavisideGradOpMaker : public framework::SingleGradOpMaker<T> { | ||
public: | ||
using framework::SingleGradOpMaker<T>::SingleGradOpMaker; | ||
|
||
protected: | ||
void Apply(GradOpPtr<T> op) const override { | ||
op->SetType("elementwise_heaviside_grad"); | ||
op->SetInput("X", this->Input("X")); | ||
op->SetInput("Y", this->Input("Y")); | ||
op->SetInput(framework::GradVarName("Out"), this->OutputGrad("Out")); | ||
op->SetOutput(framework::GradVarName("X"), this->InputGrad("X")); | ||
op->SetOutput(framework::GradVarName("Y"), this->InputGrad("Y")); | ||
op->SetAttrMap(this->Attrs()); | ||
} | ||
}; | ||
|
||
} // namespace operators | ||
} // namespace paddle | ||
|
||
namespace ops = paddle::operators; | ||
REGISTER_OPERATOR( | ||
elementwise_heaviside, ops::ElementwiseOp, ops::ElementwiseHeavisideOpMaker, | ||
ops::ElementwiseHeavisideGradOpMaker<paddle::framework::OpDesc>, | ||
ops::ElementwiseHeavisideGradOpMaker<paddle::imperative::OpBase>); | ||
|
||
REGISTER_OPERATOR(elementwise_heaviside_grad, ops::ElementwiseOpGrad); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这里请也将
heaviside
添加到这个文件的__all__
列表中,使得paddle.heviside
作为公开APIThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
完成