Theano - 矩陣乘法表達式



我們將計算兩個矩陣的點積。第一個矩陣的維度是 2 x 3,第二個矩陣的維度是 3 x 2。我們用作輸入的矩陣及其乘積在此處表示 -

$$\begin{bmatrix}0 & -1 & 2\\4 & 11 & 2\end{bmatrix} \:\begin{bmatrix}3& -1 \\1 & 2 \\35 & 20 \end{bmatrix}=\begin{bmatrix}11 & 0 \\35 & 20 \end{bmatrix}$$

宣告變數

要為上述內容編寫 Theano 表示式,我們首先宣告兩個變數來表示我們的矩陣,如下所示 -

a = tensor.dmatrix()
b = tensor.dmatrix()

dmatrix 是雙精度矩陣的型別。請注意,我們沒有在任何地方指定矩陣大小。因此,這些變數可以表示任何維度的矩陣。

定義表示式

要計算點積,我們使用了名為 dot 的內建函式,如下所示 -

c = tensor.dot(a,b)

乘法的輸出分配給一個名為 c 的矩陣變數。

定義 Theano 函式

接下來,我們像在前面示例中那樣定義一個函式來計算表示式。

f = theano.function([a,b], c)

請注意,函式的輸入是兩個矩陣型別的變數 a 和 b。函式輸出分配給變數 c,該變數將自動為矩陣型別。

呼叫 Theano 函式

我們現在使用以下語句呼叫函式 -

d = f([[0, -1, 2], [4, 11, 2]], [[3, -1],[1,2], [6,1]])

上述語句中的兩個變數是 NumPy 陣列。您可以像此處顯示的那樣顯式定義 NumPy 陣列 -

f(numpy.array([[0, -1, 2], [4, 11, 2]]),
numpy.array([[3, -1],[1,2], [6,1]]))

計算 d 後,我們列印其值 -

print (d)

您將在輸出上看到以下輸出 -

[[11. 0.]
[25. 20.]]

完整程式列表

The complete program listing is given here:
from theano import *
a = tensor.dmatrix()
b = tensor.dmatrix()
c = tensor.dot(a,b)
f = theano.function([a,b], c)
d = f([[0, -1, 2],[4, 11, 2]], [[3, -1],[1,2],[6,1]])
print (d)

此處顯示程式執行的螢幕截圖 -

Program Execution
廣告