megengine.Tensor

class Tensor(data, dtype=None, device=None, is_const=False, no_cache=False, name=None, format='default')[源代码]

一个张量对象表示固定大小元素的多维同构数组。

张量(Tensor)是 MegEngine 中所主要使用的数据结构。数据类型(dype)负责描述其中每个元素的表示形式,如 float32, int8 等等,参考 Tensor 数据类型 了解更多细节。Tensor 在设计上与 NumPy 中的 numpy.ndarray 很相似但又不尽一致。例如,在 MegEngine 中可以使用 GPU 设备来存储 Tensor 和执行计算,而 NumPy 却不行。另外在 MegEngine 中没有 view (视图)的概念,因此在索引元素时其行为可能与 NumPy 不同。所有的 Tensor 操作和 Tensor 间的运算都可以在 functional 中被找到,牢记这些行为都是 非原地的 ,它们的结果往往是返回一个新 Tensor, 而旧 Tensor 没有任何变化。

更多细节请参考 深入理解 Tensor 数据结构 专题。

参数
  • data (Tensor, ndarray, list or Python number) – 用来构造 Tensor 的数据。Tensor 可以从以下数据构造: Python list / tuple 或序列;NumPy 的 ndarray 数据结构; MegEngine 内置的方法… 等等。参考 如何创建一个 Tensor 了解更多细节。

  • dtype (dtype) – 返回 Tensor 的数据类型。如未指定,则将从给定的 data 进行推断。

  • device (device) – 张量的所在设备。如果没有特别指定则为 get_default_device 返回值。

  • is_const (bool) – 是否要将它变成追溯(Tracing)模式下的 ImutableTensor, 参考 jit.trace 接口的说明。

  • no_cache (bool) – 是否为了内存共享缓存张量。

  • name (Optional[str]) – 张量的名字可用来简化存储的模型上的图操作。

  • format (str) – 用于表明当前 Tensor 所使用的内存布局格式。它不会影响到实际的内存排布或步长设定,但有可能影响到一些与索引和维度计算有关的算子。当前仅支持设置为 “default”, “nchw” 或 “nhwc”.

注解

一些方法形如 reshape / flatten / transpose / min / max / mean / sum / prod 被实现在了 Tensor 类中,这是出于方便和一些历史原因。但其它的存在于 functional 模块中的方法则不会被添加到类方法中,这会导致代码难以维护,且太多的候选项将影响到代码补全。

属性

T

transpose 的别名。

device

返回一个字符串,表示当前 Tensor 所存储在的设备。

dmap_callback

设备映射的回调函数,参见 load

dtype

返回一个 numpy.dtype 对象,表示当前 Tensor 的数据类型。

format

返回一个表示 Tensormemory format 的字符串。

grad

此 tensor 的梯度见 autodiff

name

返回一个表示 Tensor 的名字的字符串。

ndim

返回自身 Tensor 的维数。

qparams

返回一个 QParams 对象,其中包含当前 Tensor 的量化参数。

requires_grad

返回一个布尔值,表示 Tensor 是否需要梯度。

shape

返回一个 tupleTensor, 表示当前张量的维度信息。

size

返回当前 Tensor 的大小。

方法

astype(dtype)

返回一个含有完全相同的数据和元素数目,但是数据类型被 dtype 指定的新 Tensor.

detach()

返回一个与当前图解绑后的新 Tensor .

flatten([start_axis, end_axis])

参考 flatten.

graph

item(*args)

以标准 Python numbers.Number 类型返回当前 Tensor 元素的值。

max([axis, keepdims])

参考 max.

mean([axis, keepdims])

参考 mean.

min([axis, keepdims])

参考 min.

numpy()

返回一个将当前 Tensor 转换为 numpy.ndarray 后的结果。

prod([axis, keepdims])

参考 prod.

reset_zero()

1.0 版后已移除.

reshape(*args)

参考 reshape.

set_value(value)

1.0 版后已移除.

sum([axis, keepdims])

参考 sum.

to(device, *[, _borrow])

将当前 Tensor 拷贝到指定设备。

tolist()

返回将当前张量转换成(嵌套)列表后的结果。

transpose(*args)

参考 transpose.

value_id

var