Theano - Expressão para Multiplicação de Matriz
Vamos calcular um produto escalar de duas matrizes. A primeira matriz é de dimensão 2 x 3 e a segunda é de dimensão 3 x 2. As matrizes que usamos como entrada e seus produtos são expressas aqui -
$$ \ begin {bmatrix} 0 & -1 & 2 \\ 4 & 11 & 2 \ end {bmatrix} \: \ begin {bmatrix} 3 e -1 \\ 1 & 2 \\ 35 & 20 \ end {bmatrix} = \ begin {bmatrix} 11 e 0 \\ 35 e 20 \ end {bmatrix} $$Declarando Variáveis
Para escrever uma expressão Theano para o acima, primeiro declaramos duas variáveis para representar nossas matrizes da seguinte forma -
a = tensor.dmatrix()
b = tensor.dmatrix()
O dmatrix é o tipo de matrizes para duplas. Observe que não especificamos o tamanho da matriz em qualquer lugar. Assim, essas variáveis podem representar matrizes de qualquer dimensão.
Definindo Expressão
Para calcular o produto escalar, usamos a função integrada chamada dot como segue -
c = tensor.dot(a,b)
A saída da multiplicação é atribuída a uma variável de matriz chamada c.
Definindo a Função Theano
A seguir, definimos uma função como no exemplo anterior para avaliar a expressão.
f = theano.function([a,b], c)
Observe que a entrada para a função são duas variáveis aeb que são do tipo matriz. A saída da função é atribuída a variávelc que seria automaticamente do tipo matriz.
Invocando a função Theano
Agora invocamos a função usando a seguinte instrução -
d = f([[0, -1, 2], [4, 11, 2]], [[3, -1],[1,2], [6,1]])
As duas variáveis na instrução acima são matrizes NumPy. Você pode definir explicitamente matrizes NumPy conforme mostrado aqui -
f(numpy.array([[0, -1, 2], [4, 11, 2]]),
numpy.array([[3, -1],[1,2], [6,1]]))
Depois de d é calculado, imprimimos seu valor -
print (d)
Você verá a seguinte saída na saída -
[[11. 0.]
[25. 20.]]
Lista completa do programa
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)
A captura de tela da execução do programa é mostrada aqui -