TensorSpan<T> 结构

定义

TensorSpan 表示任意内存的连续区域。 与数组不同,它可以指向托管内存或本机内存,也可以指向堆栈上分配的内存。 它是类型安全的和内存安全的。

generic <typename T>
public value class TensorSpan
[System.Diagnostics.CodeAnalysis.Experimental("SYSLIB5001", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public readonly ref struct TensorSpan<T>
[<System.Diagnostics.CodeAnalysis.Experimental("SYSLIB5001", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type TensorSpan<'T> = struct
Public Structure TensorSpan(Of T)

类型参数

T
继承
TensorSpan<T>
属性

构造函数

TensorSpan<T>(Array)

根据提供的 Array创建新的 TensorSpan<T>。 新的 TensorSpan<T> 的排名为 1,长度等于提供的 Array长度。

TensorSpan<T>(Array, ReadOnlySpan<Int32>, ReadOnlySpan<IntPtr>, ReadOnlySpan<IntPtr>)

使用指定的开始偏移量、长度和步幅在提供的 Array 上创建新的 TensorSpan<T>。 如果未提供步幅,将自动计算这些步幅。

TensorSpan<T>(Array, ReadOnlySpan<NIndex>, ReadOnlySpan<IntPtr>, ReadOnlySpan<IntPtr>)

使用指定的开始偏移量、长度和步幅在提供的 Array 上创建新的 TensorSpan<T>。 如果未提供步幅,将自动计算这些步幅。

TensorSpan<T>(Span<T>)

根据提供的 Span<T>创建新的 TensorSpan<T>。 新的 TensorSpan<T> 的排名为 1,长度等于提供的 Span<T>长度。

TensorSpan<T>(Span<T>, ReadOnlySpan<IntPtr>, ReadOnlySpan<IntPtr>)

使用指定的长度和步幅在提供的 Span<T> 上创建新的 TensorSpan<T>。 如果未提供步幅,将自动计算这些步幅。

TensorSpan<T>(T*, IntPtr)

在目标非托管缓冲区上创建新的跨度。 显然,这是相当危险的长度没有检查。 但是,如果此创建正确,则所有后续使用都是正确的。

TensorSpan<T>(T*, IntPtr, ReadOnlySpan<IntPtr>, ReadOnlySpan<IntPtr>)

在目标非托管缓冲区上创建新的跨度。 显然,这是相当危险的,因为长度没有检查。 但是,如果此创建正确,则所有后续使用都是正确的。

TensorSpan<T>(T[])

在目标数组的整个范围上创建新范围。

TensorSpan<T>(T[], Index, ReadOnlySpan<IntPtr>, ReadOnlySpan<IntPtr>)

在从“start”索引开始并以“end”索引(独占)结尾的目标数组部分创建一个新的跨度。

TensorSpan<T>(T[], Int32, ReadOnlySpan<IntPtr>, ReadOnlySpan<IntPtr>)

在从“start”索引开始并以“end”索引(独占)结尾的目标数组部分创建一个新的跨度。

属性

Empty

返回空 TensorSpan<T>

FlattenedLength

范围中的项数。

IsEmpty

获取一个值,该值指示此 TensorSpan<T> 是否为空。

Item[ReadOnlySpan<IntPtr>]

返回对 TensorSpan 的指定元素的引用。

Item[ReadOnlySpan<NIndex>]

返回对 TensorSpan 的指定元素的引用。

Item[ReadOnlySpan<NRange>]

返回 TensorSpan 的切片。

Lengths

获取此 TensorSpan<T>中每个维度的长度。

Rank

获取此 TensorSpan<T>的维度数,即排名。

Strides

获取此 TensorSpan<T> 的步幅

方法

Clear()

清除此范围的内容。

CopyTo(TensorSpan<T>)

将此范围的内容复制到目标范围。 如果源和目标重叠,则此方法的行为就像覆盖目标之前临时位置的原始值一样。

Equals(Object)
已过时.

不支持此方法,因为无法装箱跨度。 若要比较两个范围,请使用 operator==。

Fill(T)

用给定值填充此范围的内容。

FlattenTo(Span<T>)

将此范围的内容平展到提供的 Span<T>中。

GetEnumerator()

获取此范围的枚举器。

GetHashCode()
已过时.

不支持此方法,因为无法装箱跨度。

GetPinnableReference()

返回对 TensorSpan 的第 0 个元素的引用。 如果 TensorSpan 为空,则返回 null 引用。 它可用于固定,并且需要支持在固定语句中使用范围。

Slice(ReadOnlySpan<NIndex>)

返回对 TensorSpan 的指定元素的引用。

Slice(ReadOnlySpan<NRange>)

从给定范围形成切片

ToString()

对于 Span<T>,返回一个新字符串实例,该实例表示跨度指向的字符。 否则,返回一个 String,该 String 的类型和元素数。

TryCopyTo(TensorSpan<T>)

将此范围的内容复制到目标范围。 如果源和目标重叠,则此方法的行为就像覆盖目标之前临时位置的原始值一样。

TryFlattenTo(Span<T>)

将此范围的内容平展到提供的 Span<T>中。

运算符

Equality(TensorSpan<T>, TensorSpan<T>)

如果位于同一内存的左右点且长度相同,则返回 true。 请注意,这不会 检查 内容是否相等。

Implicit(T[] to TensorSpan<T>)

TensorSpan 表示任意内存的连续区域。 与数组不同,它可以指向托管内存或本机内存,也可以指向堆栈上分配的内存。 它是类型安全的和内存安全的。

Implicit(TensorSpan<T> to ReadOnlyTensorSpan<T>)

TensorSpan<T> 转换为 ReadOnlyTensorSpan<T>

Inequality(TensorSpan<T>, TensorSpan<T>)

如果位于同一内存的左右点且长度相同,则返回 false。 请注意,这不会 检查 内容是否相等。

扩展方法

BroadcastTo<T>(TensorSpan<T>, TensorSpan<T>)

将数据从 source 广播到 destination

FilteredUpdate<T>(TensorSpan<T>, ReadOnlyTensorSpan<Boolean>, T)

使用 filter 为 true 的 value 更新 tensor 张量。

FilteredUpdate<T>(TensorSpan<T>, ReadOnlyTensorSpan<Boolean>, ReadOnlyTensorSpan<T>)

使用 filter 为 true 的 values 更新 tensor 张量。 如果维度不相同,则会引发异常。

Reshape<T>(TensorSpan<T>, ReadOnlySpan<IntPtr>)

tensor 张量重塑为指定的 lengths。 如果其中一个长度为 -1,则会自动计算该长度。 不会更改基础内存的长度,也不会分配新内存。 如果新形状与旧形状不兼容,则会引发异常。

SequenceEqual<T>(TensorSpan<T>, ReadOnlyTensorSpan<T>)

通过使用 IEquatable{T} 比较元素,确定两个序列是否相等。等于(T)。

SetSlice<T>(TensorSpan<T>, ReadOnlyTensorSpan<T>, ReadOnlySpan<NRange>)

使用给定 ranges 提供的 values 设置给定 tensor 的切片

Squeeze<T>(TensorSpan<T>)

tensor中删除一个长度的所有维度。

SqueezeDimension<T>(TensorSpan<T>, Int32)

从给定 dimensiontensor 中移除长度为 1 的轴。 如果维度不是长度,则会引发异常。

ToString<T>(TensorSpan<T>, ReadOnlySpan<IntPtr>)

创建 TensorSpan<T>String 表示形式。/>

TryBroadcastTo<T>(TensorSpan<T>, TensorSpan<T>)

将数据从 tensor 广播到与 destination 兼容的最小可广播形状,并将其存储在 destination 如果形状不兼容,则返回 false。

Unsqueeze<T>(TensorSpan<T>, Int32)

插入长度为 1 的新维度,该维度将显示在维度位置。

适用于