阅读(3450) (13)

TensorFlow函数:tf.tensordot

2018-03-29 09:53:16 更新

tf.tensordot函数

别名:

  • tf.linalg.tensordot
  • tf.tensordot
tf.tensordot(
    a,
    b,
    axes,
    name=None
)

定义在:tensorflow/python/ops/math_ops.py.

请参阅指南:数学函数>张量数学函数

a 和 b 沿特定轴的张量收缩.

Tensordot(也称为张量收缩)对从 a 和 b 所指定的索引 a_axes 和 b_axes 的元素的乘积进行求和.列表 a_axes 和 b_axes 指定沿其收缩张量的那些轴对.对于所有 range(0, len(a_axes)) 中的 i,a 的轴 a_axes[i] 必须与 b 的轴 b_axes[i] 具有相同的维度.列表 a_axes 和 b_axes 必须具有相同的长度,并由唯一的整数组成,用于为每个张量指定有效的坐标轴.

该操作对应于 numpy.tensordot(a, b, axes).

示例1:当 a 和 b 是矩阵(2阶)时,axes = 1 相当于矩阵乘法.

示例2:当 a 和 b 是矩阵(2阶)时,axes = [[1], [0]] 相当于矩阵乘法.

示例3:假设 \(a_ {ijk}\)和 \(b_ {lmn}\)表示3阶的两个张量.那么,contract(a, b, [[0], [2]]) 是4阶张量 \(c_ {jklm}\),其条目对应于索引 \((j,k,l,m)\)由下式给出:

\(c_ {jklm} = \ sum_i a_ {ijk} b_ {lmi} \)

一般来说,order(c) = order(a) + order(b) - 2*len(axes[0]).

函数参数:

  • a:float32 或 float64 类型的 Tensor.
  • b:Tensor,与 a 具有相同的类型.
  • axes:可以是标量 N,也可以是具有形状 [2,k] 的 int32 Tensor 的列表.如果轴是标量,则按顺序对 a 的最后 N 个轴和 b 的前 N 个轴进行求和.如果轴是一个列表或 Tensor,则分别对于轴 a 和 b,在第一和第二行包含该组唯一整数指定沿该收缩被计算.a 和 b 的坐标轴数必须相等.
  • name:操作的名称(可选).

函数返回值:

函数返回与 a 具有相同类型的 Tensor.

可能引发的异常:

  • ValueError:如果 a,b 和 axes 的形状是不相容的.
  • IndexError:如果轴上的值超过相应张量的等级.