Beispiel #1
0
 public unsafe void SpatialMultiplication()
 {
     // Test values
     float[,]
     m1 =
     {
         { 1,    2,  3 },
         { 5, 0.1f, -2 }
     },
     m2 =
     {
         {    5,    2,    -1,    3 },
         {   -5,    2,    -7, 0.9f },
         { 0.1f, 0.2f, -0.1f,    2 }
     },
     r =
     {
         { -4.7f,                6.6f, -15.3f,  10.8f },
         { 24.3f, 9.7999999999999989f,  -5.5f, 11.09f }
     };
     fixed(float *pm1 = m1, pm2 = m2)
     {
         Tensor.Reshape(pm1, 2, 3, out Tensor m1Tensor);
         Tensor.Reshape(pm2, 3, 4, out Tensor m2Tensor);
         Tensor.New(2, 4, out Tensor result);
         CpuBlas.Multiply(m1Tensor, m2Tensor, result);
         Assert.IsTrue(result.ToArray2D().ContentEquals(r));
         result.Free();
     }
 }
Beispiel #2
0
 public unsafe void LinearMultiplication()
 {
     // Test values
     float[,] m =
     {
         { 1, 1,  1, 1 },
         { 0, 2, -1, 0 },
         { 1, 1,  1, 1 },
         { 0, 0, -1, 1 }
     };
     float[]
     v = { 1, 2, 0.1f, -2 },
     r = { 1.1f, 5.1f, 1.1f, -0.9f };
     fixed(float *pm = m, pv = v)
     {
         Tensor.Reshape(pm, 4, 4, out Tensor mTensor);
         Tensor.Reshape(pv, 1, 4, out Tensor vTensor);
         Tensor.New(1, 4, out Tensor rTensor);
         CpuBlas.Multiply(vTensor, mTensor, rTensor);
         Assert.IsTrue(rTensor.ToArray().ContentEquals(r));
         rTensor.Free();
     }
 }