TensorFlow函數:tf.tensordot

2018-03-29 13:59 更新

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.

可能引發(fā)的異常:

  • ValueError:如果 a,b 和 axes 的形狀是不相容的.
  • IndexError:如果軸上的值超過相應張量的等級.
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號