Теано - Выражение для умножения матриц
Мы вычислим скалярное произведение двух матриц. Первая матрица имеет размер 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 - это тип матриц для чисел типа double. Обратите внимание, что мы нигде не указываем размер матрицы. Таким образом, эти переменные могут представлять матрицы любой размерности.
Определение выражения
Для вычисления скалярного произведения мы использовали встроенную функцию под названием 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)
Скриншот выполнения программы показан здесь -