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 -