用法:
dask.array.tensordot(lhs, rhs, axes=2)
沿指定軸計算張量點積。
此文檔字符串是從 numpy.tensordot 複製的。
可能存在與 Dask 版本的一些不一致之處。
給定兩個張量
a
和b
以及一個包含兩個類似數組的對象(a_axes, b_axes)
的數組類似對象,將a
和b
的元素(組件)的乘積相加,軸指定為a_axes
和b_axes
。第三個參數可以是單個非負 integer_like 標量N
;如果是這樣,則將a
的最後N
維度和b
的第一個N
維度相加。- a, b:array_like
“dot” 的張量。
- axes:int 或 (2,) 數組
- integer_like 如果是int N,則按順序對
a
的最後N個軸和b
的前N個軸求和。相應軸的大小必須匹配。 - (2,) 數組 或者,要匯總的軸列表,第一個序列應用於
a
,第二個應用於b
。兩個元素 數組 必須具有相同的長度。
- integer_like 如果是int N,則按順序對
- output:ndarray
輸入的張量點積。
參數:
返回:
注意:
- 三個常見的用例是:
axes = 0
: 張量積axes = 1
: 張量點積axes = 2
:(默認)張量雙收縮
當
axes
為integer_like時,求值順序為:首先是a
中的第-N軸和b
中的第0軸,最後是a
中的第-1軸和b
中的第N軸.當有多個軸要求和時 - 它們不是
a
(b
) 的最後(第一個)軸 - 參數axes
應該由兩個相同長度的序列組成,第一個軸在兩個序列中對給定的第一個進行求和,第二個軸對第二個進行求和,依此類推。結果的形狀由第一個張量的非收縮軸和第二個張量的非收縮軸組成。
例子:
“traditional” 示例:
>>> a = np.arange(60.).reshape(3,4,5) >>> b = np.arange(24.).reshape(4,3,2) >>> c = np.tensordot(a,b, axes=([1,0],[0,1])) >>> c.shape (5, 2) >>> c array([[4400., 4730.], [4532., 4874.], [4664., 5018.], [4796., 5162.], [4928., 5306.]]) >>> # A slower but equivalent way of computing the same... >>> d = np.zeros((5,2)) >>> for i in range(5): ... for j in range(2): ... for k in range(3): ... for n in range(4): ... d[i,j] += a[k,n,i] * b[n,k,j] >>> c == d array([[ True, True], [ True, True], [ True, True], [ True, True], [ True, True]])
利用 + 和 * 重載的擴展示例:
>>> a = np.array(range(1, 9)) >>> a.shape = (2, 2, 2) >>> A = np.array(('a', 'b', 'c', 'd'), dtype=object) >>> A.shape = (2, 2) >>> a; A array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) array([['a', 'b'], ['c', 'd']], dtype=object)
>>> np.tensordot(a, A) # third argument default is 2 for double-contraction array(['abbcccdddd', 'aaaaabbbbbbcccccccdddddddd'], dtype=object)
>>> np.tensordot(a, A, 1) array([[['acc', 'bdd'], ['aaacccc', 'bbbdddd']], [['aaaaacccccc', 'bbbbbdddddd'], ['aaaaaaacccccccc', 'bbbbbbbdddddddd']]], dtype=object)
>>> np.tensordot(a, A, 0) # tensor product (result too long to incl.) array([[[[['a', 'b'], ['c', 'd']], ...
>>> np.tensordot(a, A, (0, 1)) array([[['abbbbb', 'cddddd'], ['aabbbbbb', 'ccdddddd']], [['aaabbbbbbb', 'cccddddddd'], ['aaaabbbbbbbb', 'ccccdddddddd']]], dtype=object)
>>> np.tensordot(a, A, (2, 1)) array([[['abb', 'cdd'], ['aaabbbb', 'cccdddd']], [['aaaaabbbbbb', 'cccccdddddd'], ['aaaaaaabbbbbbbb', 'cccccccdddddddd']]], dtype=object)
>>> np.tensordot(a, A, ((0, 1), (0, 1))) array(['abbbcccccddddddd', 'aabbbbccccccdddddddd'], dtype=object)
>>> np.tensordot(a, A, ((2, 1), (1, 0))) array(['acccbbdddd', 'aaaaacccccccbbbbbbdddddddd'], dtype=object)
相關用法
- Python dask.array.topk用法及代碼示例
- Python dask.array.to_npy_stack用法及代碼示例
- Python dask.array.tan用法及代碼示例
- Python dask.array.tanh用法及代碼示例
- Python dask.array.tril用法及代碼示例
- Python dask.array.triu用法及代碼示例
- Python dask.array.tile用法及代碼示例
- Python dask.array.take用法及代碼示例
- Python dask.array.true_divide用法及代碼示例
- Python dask.array.to_tiledb用法及代碼示例
- Python dask.array.trunc用法及代碼示例
- Python dask.array.to_hdf5用法及代碼示例
- Python dask.array.transpose用法及代碼示例
- Python dask.array.trace用法及代碼示例
- Python dask.array.stats.ttest_ind用法及代碼示例
- Python dask.array.ma.masked_values用法及代碼示例
- Python dask.array.divmod用法及代碼示例
- Python dask.array.negative用法及代碼示例
- Python dask.array.overlap.map_overlap用法及代碼示例
- Python dask.array.stats.ttest_rel用法及代碼示例
- Python dask.array.ma.average用法及代碼示例
- Python dask.array.vstack用法及代碼示例
- Python dask.array.isneginf用法及代碼示例
- Python dask.array.ma.masked_array用法及代碼示例
- Python dask.array.matmul用法及代碼示例
注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask.array.tensordot。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。