void TestMmGen(DeviceType device) { { var x1 = FloatTensor.Ones(new long[] { 1, 2 }, deviceType: device); var x2 = FloatTensor.Ones(new long[] { 2, 1 }, deviceType: device); var y = x1.Mm(x2).ToDevice(DeviceType.CPU); var ydata = y.Data <float>(); Assert.Equal(2.0f, ydata[0]); } //System.Runtime.InteropServices.ExternalException : addmm for CUDA tensors only supports floating - point types.Try converting the tensors with.float() at C:\w\b\windows\pytorch\aten\src\THC / generic / THCTensorMathBlas.cu:453 if (device == DeviceType.CPU) { var x1 = LongTensor.Ones(new long[] { 1, 2 }, deviceType: device); var x2 = LongTensor.Ones(new long[] { 2, 1 }, deviceType: device); var y = x1.Mm(x2).ToDevice(DeviceType.CPU); var ydata = y.Data <long>(); Assert.Equal(2L, ydata[0]); } }
public void WriteAndReadLongTensorViaDiskFile() { const int size = 10; var file = new DiskFile("test1E.dat", "rwb"); Assert.NotNull(file); Assert.True(file.CanWrite); var tensor0 = new LongTensor(size); for (var i = 0; i < size; ++i) { tensor0[i] = (long)i; } file.WriteTensor(tensor0); Assert.Equal(size * sizeof(long), file.Position); file.Seek(0); var tensor1 = new LongTensor(size); var rd = file.ReadTensor(tensor1); Assert.Equal(rd, size); Assert.Equal(size * sizeof(long), file.Position); for (var i = 0; i < rd; ++i) { Assert.Equal(tensor1[i], tensor1[i]); } file.Close(); Assert.False(file.IsOpen); }
public void CreateLongTensorOnes() { var shape = new long[] { 2, 2 }; TorchTensor t = LongTensor.Ones(shape); Assert.Equal(shape, t.Shape); Assert.Equal((long)1, t[0, 0].DataItem <int>()); Assert.Equal((long)1, t[1, 1].DataItem <int>()); }
public void TestSparse() { using (var i = LongTensor.From(new long[] { 0, 1, 1, 2, 0, 2 }, new long[] { 2, 3 })) using (var v = FloatTensor.From(new float[] { 3, 4, 5 }, new long[] { 3 })) { var sparse = FloatTensor.Sparse(i, v, new long[] { 2, 3 }); Assert.True(sparse.IsSparse); Assert.False(i.IsSparse); Assert.False(v.IsSparse); Assert.Equal(sparse.SparseIndices.Data <long>().ToArray(), new long[] { 0, 1, 1, 2, 0, 2 }); Assert.Equal(sparse.SparseValues.Data <float>().ToArray(), new float[] { 3, 4, 5 }); } }
public void RandomTest() { var res = FloatTensor.Random(new long[] { 2 }); Assert.Equal(new long[] { 2 }, res.Shape); var res1 = ShortTensor.RandomIntegers(10, new long[] { 200 }); Assert.Equal(new long[] { 200 }, res1.Shape); var res2 = IntTensor.RandomIntegers(10, new long[] { 200 }); Assert.Equal(new long[] { 200 }, res2.Shape); var res3 = LongTensor.RandomIntegers(10, new long[] { 200 }); Assert.Equal(new long[] { 200 }, res3.Shape); var res4 = ByteTensor.RandomIntegers(10, new long[] { 200 }); Assert.Equal(new long[] { 200 }, res4.Shape); var res5 = SByteTensor.RandomIntegers(10, new long[] { 200 }); Assert.Equal(new long[] { 200 }, res5.Shape); var res6 = HalfTensor.RandomIntegers(10, new long[] { 200 }); Assert.Equal(new long[] { 200 }, res6.Shape); //var res7 = ComplexHalfTensor.RandomIntegers(10, new long[] { 200 }); //Assert.Equal(new long[] { 200 }, res7.Shape); //var res8 = ComplexFloatTensor.RandomIntegers(10, new long[] { 200 }); //Assert.Equal(new long[] { 200 }, res8.Shape); //var res9 = ComplexDoubleTensor.RandomIntegers(10, new long[] { 200 }); //Assert.Equal(new long[] { 200 }, res9.Shape); }
/// <summary> /// Write longs to the file from the given long tensor. /// </summary> /// <param name="tensor">A tensor containing data to be written to the file.</param> /// <returns>The number of longs written.</returns> public long WriteTensor(LongTensor tensor) { return(THFile_writeLongRaw(this.handle, tensor.Data, tensor.NumElements)); }
/// <summary> /// Read longs from the file into the given long tensor. /// </summary> /// <param name="tensor">A tensor to place the data in after reading it from the file.</param> /// <returns>The number of longs read.</returns> public long ReadTensor(LongTensor tensor) { return(THFile_readLongRaw(this.handle, tensor.Data, tensor.NumElements)); }