Beispiel #1
0
        public void UnArgmaxWorksOnMatrix()
        {
            var a = NN.Array(new[, ] {
                { 0, 10 },
                { 2, 3 },
                { 4, -1 },
                { 6, 7 }
            });
            var argmax0   = a.Argmax(axis: 0);
            var delta0    = NN.Max(a, axis: 0);
            var selected0 = NN.UnArgmax(delta0, argmax0, 0, a.Shape[0]);
            var expected0 = NN.Array(new[, ] {
                { 0, 10 },
                { 0, 0 },
                { 0, 0 },
                { 6, 0 }
            });

            AssertArray.AreEqual(expected0, selected0);

            var argmax1   = a.Argmax(axis: 1);
            var delta1    = NN.Max(a, axis: 1);
            var selected1 = NN.UnArgmax(delta1, argmax1, 1, a.Shape[1]);
            var expected1 = NN.Array(new[, ] {
                { 0, 10 },
                { 0, 3 },
                { 4, 0 },
                { 0, 7 }
            });

            AssertArray.AreEqual(expected1, selected1);

            argmax1   = a.Argmax(axis: 1, keepDims: true);
            delta1    = NN.Max(a, axis: 1, keepDims: true);
            selected1 = NN.UnArgmax(delta1, argmax1, 1, a.Shape[1], keepDims: true);
            expected1 = NN.Array(new[, ] {
                { 0, 10 },
                { 0, 3 },
                { 4, 0 },
                { 0, 7 }
            });
            AssertArray.AreEqual(expected1, selected1);
        }