Theano - Biểu thức cho phép nhân ma trận

Chúng tôi sẽ tính tích một chấm của hai ma trận. Ma trận đầu tiên có kích thước 2 x 3 và ma trận thứ hai có kích thước 3 x 2. Các ma trận mà chúng tôi đã sử dụng làm đầu vào và tích của chúng được thể hiện ở đây -

$$ \ 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} $$

Khai báo các biến

Để viết một biểu thức Theano cho phần trên, trước tiên chúng ta khai báo hai biến để biểu diễn các ma trận của chúng ta như sau:

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

Dmatrix là Loại ma trận nhân đôi. Lưu ý rằng chúng tôi không chỉ định kích thước ma trận ở bất kỳ đâu. Do đó, các biến này có thể đại diện cho ma trận của bất kỳ thứ nguyên nào.

Xác định Biểu thức

Để tính toán sản phẩm chấm, chúng tôi đã sử dụng hàm tích hợp có tên dot như sau -

c = tensor.dot(a,b)

Đầu ra của phép nhân được gán cho một biến ma trận được gọi là c.

Xác định chức năng Theano

Tiếp theo, chúng ta xác định một hàm như trong ví dụ trước đó để đánh giá biểu thức.

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

Lưu ý rằng đầu vào cho hàm là hai biến a và b có kiểu ma trận. Đầu ra của hàm được gán cho biếnc mà sẽ tự động có kiểu ma trận.

Gọi hàm Theano

Bây giờ chúng ta gọi hàm bằng câu lệnh sau:

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

Hai biến trong câu lệnh trên là mảng NumPy. Bạn có thể xác định rõ ràng các mảng NumPy như được hiển thị ở đây -

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

Sau d được tính toán, chúng tôi in giá trị của nó -

print (d)

Bạn sẽ thấy kết quả sau trên đầu ra:

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

Danh sách đầy đủ chương trình

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)

Ảnh chụp màn hình thực hiện chương trình được hiển thị ở đây -