arg_max_op.cc 2.4 KB
Newer Older
S
sneaxiy 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/* 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. */

15
#include "paddle/fluid/framework/op_version_registry.h"
Y
yuyang18 已提交
16
#include "paddle/fluid/operators/arg_min_max_op_base.h"
S
sneaxiy 已提交
17

H
hong 已提交
18 19 20 21
REGISTER_OPERATOR(
    arg_max, paddle::operators::ArgMinMaxOp, paddle::operators::ArgMaxOpMaker,
    paddle::framework::EmptyGradOpMaker<paddle::framework::OpDesc>,
    paddle::framework::EmptyGradOpMaker<paddle::imperative::OpBase>);
S
sneaxiy 已提交
22 23

REGISTER_OP_CPU_KERNEL(
Y
yuyang18 已提交
24 25 26 27
    arg_max,
    paddle::operators::ArgMaxKernel<paddle::platform::CPUDeviceContext, float>,
    paddle::operators::ArgMaxKernel<paddle::platform::CPUDeviceContext, double>,
    paddle::operators::ArgMaxKernel<paddle::platform::CPUDeviceContext,
S
sneaxiy 已提交
28
                                    int64_t>,
Y
yuyang18 已提交
29 30 31 32 33 34
    paddle::operators::ArgMaxKernel<paddle::platform::CPUDeviceContext,
                                    int32_t>,
    paddle::operators::ArgMaxKernel<paddle::platform::CPUDeviceContext,
                                    int16_t>,
    paddle::operators::ArgMaxKernel<paddle::platform::CPUDeviceContext,
                                    uint8_t>);
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
REGISTER_OP_VERSION(arg_max)
    .AddCheckpoint(
        R"ROC(
              Upgrade argmax add a new attribute [flatten] and modify the attribute of dtype)ROC",
        paddle::framework::compatible::OpVersionDesc()
            .NewAttr("flatten",
                     "In order to compute the argmax over the flattened array "
                     "when the "
                     "argument `axis` in python API is None.",
                     false)
            .ModifyAttr(
                "dtype",
                "change the default value of dtype, the older version "
                "is -1, means return the int64 indices."
                "The new version is 3, return the int64 indices directly."
                "And supporting the dtype of -1 in new version.",
                3));