public override void Update(NDArray labels, NDArray preds) { if (labels == null) { throw new ArgumentNullException(nameof(labels)); } if (preds == null) { throw new ArgumentNullException(nameof(preds)); } CheckLabelShapes(labels, preds); var predData = new mx_float[preds.Size]; var labelData = new mx_float[labels.Size]; preds.SyncCopyToCPU(predData); labels.SyncCopyToCPU(labelData); var len = (uint)preds.Size; mx_float sum = 0; for (var i = 0; i < len; ++i) { mx_float diff = predData[i] - labelData[i]; sum += diff * diff; } this.SumMetric += sum / len; ++this.NumInst; }
public override void Update(NDArray labels, NDArray preds) { if (labels == null) { throw new ArgumentNullException(nameof(labels)); } if (preds == null) { throw new ArgumentNullException(nameof(preds)); } var len = labels.GetShape()[0]; var m = preds.GetShape()[1]; var predData = new mx_float[len * m]; var labelData = new mx_float[len]; preds.SyncCopyToCPU(predData); labels.SyncCopyToCPU(labelData); for (var i = 0; i < len; ++i) { // ToDo: (int)(i * m + labelData[i]) is no problem? this.SumMetric += (float)(-Math.Log(Math.Max(predData[(int)(i * m + labelData[i])], Epsilon))); this.NumInst += 1; } }
public override void Update(NDArray labels, NDArray preds) { if (labels == null) { throw new ArgumentNullException(nameof(labels)); } if (preds == null) { throw new ArgumentNullException(nameof(preds)); } Logging.CHECK_EQ(labels.GetShape().Count, 1); var len = labels.GetShape()[0]; var predData = new mx_float[len]; var labelData = new mx_float[len]; preds.ArgmaxChannel().SyncCopyToCPU(predData); labels.SyncCopyToCPU(labelData); for (var i = 0; i < len; ++i) { this.SumMetric += Math.Abs(predData[i] - labelData[i]) < float.Epsilon ? 1 : 0; this.NumInst += 1; } }
public override void Update(NDArray labels, NDArray preds) { if (labels == null) { throw new ArgumentNullException(nameof(labels)); } if (preds == null) { throw new ArgumentNullException(nameof(preds)); } CheckLabelShapes(labels, preds); var predData = new mx_float[preds.Size]; var labelData = new mx_float[labels.Size]; preds.SyncCopyToCPU(predData); labels.SyncCopyToCPU(labelData); var len = (uint)preds.Size; mx_float sum = 0; for (var i = 0; i < len; ++i) { var diff = predData[i] - labelData[i]; sum += diff * diff; } mx_float mse = sum / len; if (mse > 0) { this.SumMetric += (mx_float)(10 * Math.Log(255.0d / mse) / Log10); } else { this.SumMetric += 99.0f; } ++this.NumInst; }