コード例 #1
0
ファイル: TestTorchTensor.cs プロジェクト: hxjj/TorchSharp
        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]);
            }
        }
コード例 #2
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);
        }
コード例 #3
0
ファイル: TestTorchTensor.cs プロジェクト: hxjj/TorchSharp
        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>());
        }
コード例 #4
0
ファイル: TestTorchTensor.cs プロジェクト: hxjj/TorchSharp
        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 });
                }
        }
コード例 #5
0
ファイル: TestTorchTensor.cs プロジェクト: hxjj/TorchSharp
        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);
        }
コード例 #6
0
 /// <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));
 }
コード例 #7
0
 /// <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));
 }