コード例 #1
0
ファイル: MSE.cs プロジェクト: takuya-takeuchi/MXNetDotNet
        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;
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
ファイル: PSNR.cs プロジェクト: takuya-takeuchi/MXNetDotNet
        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;
        }