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); }