Theano - Expresión para multiplicación de matrices
Calcularemos un producto escalar de dos matrices. La primera matriz es de dimensión 2 x 3 y la segunda es de dimensión 3 x 2. Las matrices que usamos como entrada y su producto se expresan aquí -
$$ \ begin {bmatrix} 0 & -1 & 2 \\ 4 & 11 & 2 \ end {bmatrix} \: \ begin {bmatrix} 3 & -1 \\ 1 & 2 \\ 35 & 20 \ end {bmatrix} = \ begin {bmatrix} 11 y 0 \\ 35 y 20 \ end {bmatrix} $$Declaración de variables
Para escribir una expresión Theano para lo anterior, primero declaramos dos variables para representar nuestras matrices de la siguiente manera:
a = tensor.dmatrix()
b = tensor.dmatrix()
La dmatrix es el tipo de matrices para dobles. Tenga en cuenta que no especificamos el tamaño de la matriz en ninguna parte. Por tanto, estas variables pueden representar matrices de cualquier dimensión.
Definición de expresión
Para calcular el producto escalar, usamos la función incorporada llamada dot como sigue -
c = tensor.dot(a,b)
La salida de la multiplicación se asigna a una variable de matriz llamada c.
Definición de la función Theano
A continuación, definimos una función como en el ejemplo anterior para evaluar la expresión.
f = theano.function([a,b], c)
Tenga en cuenta que la entrada a la función son dos variables ayb que son de tipo matriz. La salida de la función se asigna a la variablec que sería automáticamente de tipo matriz.
Invocación de la función Theano
Ahora invocamos la función usando la siguiente declaración:
d = f([[0, -1, 2], [4, 11, 2]], [[3, -1],[1,2], [6,1]])
Las dos variables en la declaración anterior son matrices NumPy. Puede definir explícitamente matrices NumPy como se muestra aquí -
f(numpy.array([[0, -1, 2], [4, 11, 2]]),
numpy.array([[3, -1],[1,2], [6,1]]))
Después d se calcula imprimimos su valor -
print (d)
Verá la siguiente salida en la salida:
[[11. 0.]
[25. 20.]]
Listado completo del 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)
La captura de pantalla de la ejecución del programa se muestra aquí: