阅读(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:如果轴上的值超过相应张量的等级.