#ifndef CAFFE2_MAP_OP_H_ #define CAFFE2_MAP_OP_H_ #include "caffe2/core/context.h" #include "caffe2/core/operator.h" namespace caffe2 { template class APMeterOp final : public Operator { public: USE_OPERATOR_CONTEXT_FUNCTIONS; template explicit APMeterOp(Args&&... args) : Operator(std::forward(args)...), buffer_size_( this->template GetSingleArgument("buffer_size", 1000)), buffer_used_(0) {} bool RunOnDevice() override; protected: using BufferDataType = std::pair; // Buffer the predictions for each class std::vector> buffers_; // Capacity of the buffer int buffer_size_; // Used buffer int buffer_used_; INPUT_TAGS(PREDICTION, LABEL); protected: // Buffer predictions for N sample and D classes void BufferPredictions(const float* Xdata, const int* labelData, int N, int D); }; } // namespace caffe2 #endif // CAFFE2_MAP_OP_H_