Esempio n. 1
0
        public void TestIndexing()
        {
            var s1 = new TensorSize2(5, 5);

            var idx = s1.GetFlattenedIndex(1, 2);

            var indices = s1.GetDecomposedIndex(idx);

            Assert.AreEqual(1, indices[0]);
            Assert.AreEqual(2, indices[1]);
        }
Esempio n. 2
0
        public void CopyTo <Tout>(SpanTensor2 <Tout> masterOut, TensorSize2 kernelSize, Kernel2Copy <T, Tout> kernel, TensorIndices2 margin = default)
            where Tout : unmanaged
        {
            var tmpSrc = new SpanTensor2 <T>(kernelSize);
            var tmpDst = new SpanTensor2 <Tout>(kernelSize);

            var stepSize = kernelSize - margin - margin;

            for (int i0 = 0; i0 < masterOut.Dimensions[0]; i0 += stepSize[0])
            {
                for (int i1 = 0; i1 < masterOut.Dimensions[1]; i1 += stepSize[1])
                {
                    var offset = new TensorIndices2(i0, i1);
                    this.CopyTo(offset, tmpSrc, default, kernelSize);
Esempio n. 3
0
        public void CopyTo(TensorIndices2 srcOffset, SpanTensor2 <T> dst, TensorIndices2 dstOffset, TensorSize2 size)
        {
            size = TensorSize2.Min(size, TensorSize2.ExclusiveUnion(this.Dimensions, ref srcOffset, dst.Dimensions, ref dstOffset));

            for (int i0 = 0; i0 < size[0]; ++i0)
            {
                var srcSpan = this[srcOffset[0] + i0].Span.Slice(srcOffset[1]);
                var dstSpan = dst[dstOffset[0] + i0].Span.Slice(dstOffset[1]);

                var l1 = Math.Min(srcSpan.Length, dstSpan.Length);
                l1 = Math.Min(l1, size[1]);

                srcSpan.Slice(0, l1).CopyTo(dstSpan);
            }
        }