Tensorflow
TensorFlow es una biblioteca de código abierto desarrollada por Google que se usa para crear y entrenar modelos de aprendizaje automático y redes neuronales. Es particularmente popular para el desarrollo de modelos de aprendizaje profundo debido a su versatilidad y soporte para operaciones de cálculo distribuidas. TensorFlow permite realizar cálculos numéricos eficientes mediante el uso de gráficos de flujo de datos, donde los datos se representan como tensores (arreglos multidimensionales) y las operaciones matemáticas como nodos en el gráfico.
Estructura básica de TensorFlow
- Tensores:
- Los tensores son las unidades de datos básicas en TensorFlow, similares a matrices y arreglos de Numpy.
- Pueden tener dimensiones desde cero (escalar), una (vector), dos (matriz), o más (tensores de mayor orden).
- Ejemplo de tensores:
import tensorflow as tf # Escalar tensor_escalar = tf.constant(3) # Vector tensor_vector = tf.constant([1, 2, 3]) # Matriz tensor_matriz = tf.constant([[1, 2], [3, 4]])
- Gráfico Computacional:
- En TensorFlow, las operaciones y tensores se organizan en un gráfico de flujo de datos.
- Este gráfico permite la ejecución eficiente de operaciones y facilita el cálculo distribuido en múltiples dispositivos (CPU, GPU).
- En TensorFlow 1.x, era necesario construir y ejecutar explícitamente un gráfico, mientras que en TensorFlow 2.x esto se simplifica al permitir la ejecución “eager” (inmediata), donde el gráfico se ejecuta conforme a las instrucciones.
- Operaciones (Ops):
- Las “ops” son las operaciones que se aplican a los tensores, como suma, multiplicación, y convolución.
- TensorFlow incluye una amplia gama de ops para manipular y transformar los tensores.
- Variables y Constantes:
- Constantes: Valores fijos en el gráfico que no cambian durante la ejecución.
c = tf.constant(10) # Valor fijo
- Variables: Valores que pueden ser modificados y entrenados, especialmente útiles para almacenar pesos y sesgos en modelos de aprendizaje profundo.
v = tf.Variable(5.0) # Valor que puede cambiar
- Constantes: Valores fijos en el gráfico que no cambian durante la ejecución.
- Sesión (solo en TensorFlow 1.x):
- La sesión ejecuta el gráfico en TensorFlow 1.x, permitiendo evaluar tensores y realizar operaciones.
- En TensorFlow 2.x, esto ya no es necesario, ya que la ejecución eager hace que los cálculos se realicen inmediatamente.
- Funciones y Decoradores (@tf.function):
- En TensorFlow 2.x, el decorador
@tf.function
permite crear funciones que se ejecutan de manera optimizada como gráficos, mejorando la eficiencia y reduciendo el tiempo de ejecución. - Las funciones se convierten en gráficos automáticamente al usar este decorador, lo cual es útil en modelos que necesitan optimización de recursos.
@tf.function def add(a, b): return a + b
- En TensorFlow 2.x, el decorador
- Keras API:
- TensorFlow incluye la API Keras, que proporciona una interfaz de alto nivel para construir y entrenar modelos de aprendizaje profundo.
- A través de
tf.keras
, se pueden crear modelos de manera modular usando capas predefinidas y estructuradas, como las redes neuronales densas y las capas de convolución.
Ejemplo básico de TensorFlow
Aquí tienes un ejemplo sencillo de un modelo de regresión lineal usando TensorFlow y la API de Keras:
import tensorflow as tf
# Datos de entrenamiento
x_train = tf.constant([1.0, 2.0, 3.0, 4.0])
y_train = tf.constant([2.0, 4.0, 6.0, 8.0])
# Definición del modelo
model = tf.keras.Sequential([
tf.keras.layers.Dense(units=1, input_shape=[1]) # Capa densa con una neurona
])
# Compilación del modelo
model.compile(optimizer='sgd', loss='mean_squared_error')
# Entrenamiento
model.fit(x_train, y_train, epochs=100)
# Predicción
print(model.predict([5.0])) # Debería aproximarse a 10.0
Este código define y entrena un modelo básico de regresión lineal. TensorFlow maneja automáticamente el flujo de datos, la optimización de recursos y el cálculo de gradientes, facilitando la creación de modelos complejos.