Created by: kuke
resolve PaddlePaddle/Paddle#2230
In progress. Add pseudo code and test information later.