TensorFlow函數(shù):tf.tensordot

2018-03-29 13:59 更新

tf.tensordot函數(shù)

別名:

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

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

請(qǐng)參閱指南:數(shù)學(xué)函數(shù)>張量數(shù)學(xué)函數(shù)

a 和 b 沿特定軸的張量收縮.

Tensordot(也稱為張量收縮)對(duì)從 a 和 b 所指定的索引 a_axes 和 b_axes 的元素的乘積進(jìn)行求和.列表 a_axes 和 b_axes 指定沿其收縮張量的那些軸對(duì).對(duì)于所有 range(0, len(a_axes)) 中的 i,a 的軸 a_axes[i] 必須與 b 的軸 b_axes[i] 具有相同的維度.列表 a_axes 和 b_axes 必須具有相同的長(zhǎng)度,并由唯一的整數(shù)組成,用于為每個(gè)張量指定有效的坐標(biāo)軸.

該操作對(duì)應(yīng)于 numpy.tensordot(a, b, axes).

示例1:當(dāng) a 和 b 是矩陣(2階)時(shí),axes = 1 相當(dāng)于矩陣乘法.

示例2:當(dāng) a 和 b 是矩陣(2階)時(shí),axes = [[1], [0]] 相當(dāng)于矩陣乘法.

示例3:假設(shè) \(a_ {ijk}\)和 \(b_ {lmn}\)表示3階的兩個(gè)張量.那么,contract(a, b, [[0], [2]]) 是4階張量 \(c_ {jklm}\),其條目對(duì)應(yīng)于索引 \((j,k,l,m)\)由下式給出:

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

一般來(lái)說(shuō),order(c) = order(a) + order(b) - 2*len(axes[0]).

函數(shù)參數(shù):

  • a:float32 或 float64 類型的 Tensor.
  • b:Tensor,與 a 具有相同的類型.
  • axes:可以是標(biāo)量 N,也可以是具有形狀 [2,k] 的 int32 Tensor 的列表.如果軸是標(biāo)量,則按順序?qū)?a 的最后 N 個(gè)軸和 b 的前 N 個(gè)軸進(jìn)行求和.如果軸是一個(gè)列表或 Tensor,則分別對(duì)于軸 a 和 b,在第一和第二行包含該組唯一整數(shù)指定沿該收縮被計(jì)算.a 和 b 的坐標(biāo)軸數(shù)必須相等.
  • name:操作的名稱(可選).

函數(shù)返回值:

函數(shù)返回與 a 具有相同類型的 Tensor.

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

  • ValueError:如果 a,b 和 axes 的形狀是不相容的.
  • IndexError:如果軸上的值超過相應(yīng)張量的等級(jí).
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)