#ifndef CAFFE2_OPERATORS_LOSS_OP_H_ #define CAFFE2_OPERATORS_LOSS_OP_H_ #include "caffe2/core/context.h" #include "caffe2/core/logging.h" #include "caffe2/core/operator.h" #include "caffe2/operators/reduction_ops.h" #include "caffe2/operators/utility_ops.h" #include "caffe2/utils/math.h" namespace caffe2 { // AveragedLoss takes in the input and produces the output loss value as // the average of the input. template class AveragedLoss final : public SumElementsOp { public: template explicit AveragedLoss(Args&&... args) : SumElementsOp(std::forward(args)..., true) {} ~AveragedLoss() {} }; template class AveragedLossGradient final : public SumElementsGradientOp { public: template explicit AveragedLossGradient(Args&&... args) : SumElementsGradientOp(std::forward(args)..., true) {} ~AveragedLossGradient() {} }; } // namespace caffe2 #endif // CAFFE2_OPERATORS_LOSS_OP_H_