Variables teano y simbólicas
Para explicar las variables compartidas, primero debe comprender que Theano realiza cálculos a través de expresiones simbólicas. Esto significa que las variables en el cálculo no reciben ningún valor de inmediato. Por ejemplo el siguiente código:
x = theano.tensor.matrix (‘x’)
y = theano.tensor.matrix (‘y’)
z = x + y
f = theano.function (entradas = [x, y], salidas = [z])
salida = f ([[1, 2, 3]], [[4, 5, 6]])
- ¿No fue [math] flag [B] [/ math] modificado por thread [math] B [/ math] antes de [math] read_ {B} (flag [A] == false) [/ math]? ¿Por qué es una contradicción?
- ¿Cuáles son los fundamentos teóricos del aprendizaje profundo?
- ¿Qué métodos de análisis deberían usarse cuando el nivel de la variable dependiente es mucho mayor que el número de variable independiente?
- ¿Cómo podría razonar matemáticamente sobre la corrección y solidez de un programa en programación funcional?
- Cómo crear una ecuación matemática compleja desde cero
En este código, x, y y z no reciben ningún valor tras la declaración. En la cuarta línea, theano compila la expresión z = x + y en una función f. Cuando se llama f con los valores de x e y en la línea final, solo entonces se asignan los valores relevantes. La variable de salida debe contener [[5, 7, 9]].
Variables simbólicas con valores predefinidos
Asignar valores a las variables siempre que lo desee es genial, pero ¿qué sucede si desea agregar x a una matriz predefinida que siempre tiene los mismos valores? Podemos modificar el código:
x = theano.tensor.matrix (‘x’)
y = theano.tensor.shared (numpy.array ([[4, 5, 6]]))
z = x + y
f = theano.function (entradas = [x], salidas = [z])
salida = f ([[1, 2, 3]])
Observe que el valor de y no se pasa a f en la línea final, esto se debe a que ya se le ha dado un valor a través del constructor compartido.
Los principales beneficios del uso de constructores compartidos son que puede usarlos para inicializar variables importantes con valores numéricos predefinidos (matrices de peso en una red neuronal, por ejemplo).
Si la construcción se realiza correctamente, theano envía automáticamente las matrices grandes a la memoria de la GPU para un cálculo más rápido.