26 #ifndef MXNET_CPP_METRIC_H_
27 #define MXNET_CPP_METRIC_H_
34 #include "dmlc/logging.h"
62 CHECK_EQ(labels.
Size(), preds.
Size());
72 CHECK_EQ(labels.
GetShape().size(), 1);
74 std::vector<mx_float> pred_data(len);
75 std::vector<mx_float> label_data(len);
78 for (
mx_uint i = 0; i < len; ++i) {
79 sum_metric += (pred_data[i] == label_data[i]) ? 1 : 0;
90 static const float epsilon = 1e-15;
93 std::vector<mx_float> pred_data(len * m);
94 std::vector<mx_float> label_data(len);
97 for (
mx_uint i = 0; i < len; ++i) {
98 sum_metric += -std::log(std::max(pred_data[i * m + label_data[i]], epsilon));
111 std::vector<mx_float> pred_data;
113 std::vector<mx_float> label_data;
116 size_t len = preds.
Size();
118 for (
size_t i = 0; i < len; ++i) {
119 sum += std::abs(pred_data[i] - label_data[i]);
133 std::vector<mx_float> pred_data;
135 std::vector<mx_float> label_data;
138 size_t len = preds.
Size();
140 for (
size_t i = 0; i < len; ++i) {
141 mx_float diff = pred_data[i] - label_data[i];
156 std::vector<mx_float> pred_data;
158 std::vector<mx_float> label_data;
161 size_t len = preds.
Size();
163 for (
size_t i = 0; i < len; ++i) {
164 mx_float diff = pred_data[i] - label_data[i];
179 std::vector<mx_float> pred_data;
181 std::vector<mx_float> label_data;
184 size_t len = preds.
Size();
186 for (
size_t i = 0; i < len; ++i) {
187 mx_float diff = pred_data[i] - label_data[i];
192 sum_metric += 10 * std::log(255.0f / mse) / log10_;
206 #endif // MXNET_CPP_METRIC_H_