一、np.einsum簡介
numpy.einsum函數是一個高效且靈活的實現張量轉換的工具,它允許將多個數組合併,重組和排列以生產所需的輸出數組,同時還提供了對應的字母表示方法。einsum的任務是對張量計算進行優化,同時避免給平凡的張量計算增加複雜性,增加對於平凡的張量計算的支持。
二、應用場景
在科學計算領域,einsum的使用非常廣泛,特別是在數學、物理和工程學的計算過程中可以發揮重要的作用,尤其是在處理多個數組的時候einsum幾乎是必用的工具。
einsum專門用於張量的計算,比如對數組進行乘法、取和、矩陣乘法、計算內積和外積等。 和其他張量工具相比,einsum的優勢在於支持對不同字母進行靈活的指定和重組,同時還可以在計算之前對數組進行各種操作,以適應各種計算需求。
三、常用字母符號的解釋
習慣上,einsum使用一種類似於字元串的形式來操作所有的張量計算,根據numpy官方文檔中指定的表示方法,它可以覆蓋絕大部分的張量計算。
- 省略號(…): 省略了一個或多個完整的索引,等價於所有剩餘位置的求和,通常只出現在輸入數組的末尾。
- 逗號(,): 連接兩個輸入數組,通常是在兩個數組的末尾分別闡述。
- 大寫字母: 大寫字母通常用來表示要在輸出中產生的結果數組中的一維的批量處理或者張量的性質,多用於向量空間和矩陣的範疇中。
- 小寫字母: 小寫字母通常用來指定要在輸入數組中的某個維度上進行處理。
四、使用示例
import numpy as np a = np.arange(25).reshape(5,5) b = np.ones((5,5)) # 點積 c = np.einsum('ij,ij->',a,b) print(c) # 按列求和 c = np.einsum('ij->j',a) print(c) # 矩陣相乘 c = np.einsum('ij,jk->ik',a,b) print(c)
五、小結
np.einsum作為numpt獨有的函數,已經成為科學計算領域中的一種基本演算法,同時在機器學習的過程中也發揮了重要的作用。對於numpy用戶來說,熟練掌握np.einsum函數的使用是必不可缺的一部分。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/300885.html