| #include "caffe2/operators/accumulate_op.h" |
| |
| namespace caffe2 { |
| REGISTER_CPU_OPERATOR(Accumulate, AccumulateOp<float, CPUContext>); |
| |
| OPERATOR_SCHEMA(Accumulate) |
| .NumInputs(1) |
| .NumOutputs(1) |
| .IdenticalTypeAndShape() |
| .SetDoc(R"DOC( |
| Accumulate operator accumulates the input tensor to the output tensor. If the |
| output tensor already has the right size, we add to it; otherwise, we first |
| initialize the output tensor to all zeros, and then do accumulation. Any |
| further calls to the operator, given that no one else fiddles with the output |
| in the interim, will do simple accumulations. |
| Accumulation is done using Axpby operation as shown: |
| Y = 1*X + gamma*Y |
| where X is the input tensor, Y is the output tensor and gamma is the multiplier |
| argument. |
| )DOC") |
| .Arg("gamma", "(float, default 1.0) Accumulation multiplier") |
| .Input(0, "input", "The input tensor that has to be accumulated to the " |
| "output tensor. If the output size is not the same as input size, the " |
| "output tensor is first reshaped and initialized to zero, and only " |
| "then, accumulation is done.") |
| .Output(0, "output", "Accumulated output tensor"); |
| |
| SHOULD_NOT_DO_GRADIENT(Accumulate); |
| } // namespace caffe2 |