public void TestCustomInitialiserInitialise() { CustomInitialiser initialiser = new CustomInitialiser((i, s, r) => 5); ADNDArray <float> array = new ADNDArray <float>(2, 3); initialiser.Initialise(array, new CpuFloat32Handler(), new Random()); foreach (var value in array.GetDataAs <float>()) { Assert.AreEqual(5, value); } }
public void TestNdArrayTranspose() { ADNDArray <int> array = new ADNDArray <int>(data: new[] { 1, 2, 3, 4, 5, 6, 7, 8 }, shape: new long[] { 2, 4 }); ADNDArray <int> transposed = (ADNDArray <int>)array.Transpose(); array.TransposeSelf(); Assert.AreEqual(new long[] { 4, 2 }, transposed.Shape); Assert.AreEqual(new long[] { 4, 2 }, array.Shape); Assert.AreEqual(new long[] { 2, 1 }, array.Strides); Assert.AreEqual(new long[] { 2, 1 }, array.Strides); }
public void TestNdArrayPermute() { ADNDArray <int> array = new ADNDArray <int>(data: new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, shape: new long[] { 2, 2, 3 }); ADNDArray <int> permuted = (ADNDArray <int>)array.Permute(2, 1, 0); array.PermuteSelf(2, 1, 0); Assert.AreEqual(new long[] { 3, 2, 2 }, permuted.Shape); Assert.AreEqual(new long[] { 3, 2, 2 }, array.Shape); Assert.AreEqual(new long[] { 4, 2, 1 }, permuted.Strides); Assert.AreEqual(new long[] { 4, 2, 1 }, array.Strides); }
public void TestNdArrayReshape() { ADNDArray <int> array = new ADNDArray <int>(data: new[] { 1, 2, 3, 4, 5, 6, 7, 8 }, shape: new long[] { 2, 4 }); ADNDArray <int> reshaped = (ADNDArray <int>)array.Reshape(4, 2); array.ReshapeSelf(4, 2); Assert.AreEqual(new long[] { 4, 2 }, array.Shape); Assert.AreEqual(new long[] { 4, 2 }, reshaped.Shape); Assert.AreEqual(new long[] { 2, 1 }, reshaped.Strides); Assert.AreEqual(new long[] { 2, 1 }, array.Strides); }
public void TestNdArrayCreate() { ADNDArray <int> intArray = new ADNDArray <int>(data: new[] { 1, 2, 3, 4, 5, 6, 7, 8 }, shape: new long[] { 2, 4 }); Assert.AreEqual(new[] { 1, 2, 3, 4, 5, 6, 7, 8 }, intArray.GetDataAs <int>().GetValuesArrayAs <int>(0, 8)); Assert.AreEqual(new long[] { 2, 4 }, intArray.Shape); Assert.AreEqual(new long[] { 4, 1 }, intArray.Strides); ADNDArray <float> floatArray = new ADNDArray <float>(new DataBuffer <float>(new[] { 1.1f, 2.2f, 3.3f, 4.4f })); Assert.AreEqual(new[] { 1.1f, 2.2f, 3.3f, 4.4f }, floatArray.GetDataAs <float>().GetValuesArray(0, 4)); Assert.AreEqual(new long[] { 1, 4 }, floatArray.Shape); Assert.AreEqual(new long[] { 4, 1 }, floatArray.Strides); }
public void TestGaussianInitialiserInitialise() { ConstantValueInitialiser initialiser = new ConstantValueInitialiser(2.0); INDArray array = new ADNDArray <float>(2, 1, 2, 2); IComputationHandler handler = new CpuFloat32Handler(); Random random = new Random(); Assert.Throws <ArgumentNullException>(() => initialiser.Initialise((INDArray)null, handler, random)); Assert.Throws <ArgumentNullException>(() => initialiser.Initialise((INumber)null, handler, random)); Assert.Throws <ArgumentNullException>(() => initialiser.Initialise(array, null, random)); Assert.Throws <ArgumentNullException>(() => initialiser.Initialise(array, handler, null)); // TODO implement gaussian initialiser test somehow }
/// <summary> /// A helper function to call the toString method of the default NDArray implementation. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="array"></param> /// <param name="toStringElement"></param> /// <param name="maxDimensionNewLine"></param> /// <param name="printSeperator"></param> /// <returns></returns> public static string ToString <T>(INDArray array, ADNDArray <T> .ToStringElement toStringElement = null, int maxDimensionNewLine = 2, bool printSeperator = true) { return(((ADNDArray <T>)array).ToString(toStringElement, maxDimensionNewLine, printSeperator)); }