maxframe.tensor.diag#

maxframe.tensor.diag(v, k=0, sparse=None, gpu=None, chunk_size=None)[源代码]#

提取对角线或构造对角线张量。

如果你使用此函数提取对角线并希望写入结果张量,请参阅 mt.diagonal 的更详细文档

参数:
  • v (array_like) -- 如果 v 是一个二维张量,则返回其第 k 条对角线。如果 v 是一维张量,则返回一个以 v 作为第 k 条对角线的二维张量。

  • k (int, optional) -- 所考虑的对角线。默认值为 0。使用 k>0 表示主对角线上方的对角线,使用 k<0 表示主对角线下方的对角线。

  • sparse (bool, optional) -- 如果为 True 则创建稀疏张量,默认为 False

  • gpu (bool, optional) -- 如果为 True 则在 GPU 上分配张量,默认为 False

  • chunk_size (int or tuple of int or tuple of ints, optional) -- 每个维度上期望的块大小

返回:

out -- 提取的对角线或构造的对角线张量。

返回类型:

Tensor

参见

diagonal

返回指定的对角线。

diagflat

创建一个以展平输入作为对角线的二维数组。

trace

沿对角线求和。

triu

张量的上三角部分。

tril

张量的下三角部分。

示例

>>> import maxframe.tensor as mt
>>> x = mt.arange(9).reshape((3,3))
>>> x.execute()
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> mt.diag(x).execute()
array([0, 4, 8])
>>> mt.diag(x, k=1).execute()
array([1, 5])
>>> mt.diag(x, k=-1).execute()
array([3, 7])
>>> mt.diag(mt.diag(x)).execute()
array([[0, 0, 0],
       [0, 4, 0],
       [0, 0, 8]])