Ejemplos Tensorflow
1. Tensores
Los tensores son estructuras de datos que generalizan los vectores y matrices. Pueden tener cualquier número de dimensiones (o “rangos”) y almacenar diferentes tipos de datos. Los tipos básicos de tensores son:
- Escalar (tensor de rango 0): representa un solo valor.
- Vector (tensor de rango 1): una lista de valores en una dimensión.
- Matriz (tensor de rango 2): una lista de listas (o tabla 2D).
- Tensor de mayor rango (rango >= 3): tiene múltiples dimensiones.
En TensorFlow, los tensores son creados usualmente con tf.constant()
para valores fijos o tf.Variable()
para valores que pueden cambiar (ej. pesos en un modelo). A continuación se muestran algunos ejemplos de creación de tensores:
Ejemplos de creación de tensores
import tensorflow as tf
# Escalar (rango 0)
tensor_escalar = tf.constant(42)
print("Escalar:", tensor_escalar)
# Vector (rango 1)
tensor_vector = tf.constant([1.0, 2.0, 3.0])
print("Vector:", tensor_vector)
# Matriz (rango 2)
tensor_matriz = tf.constant([[1.0, 2.0], [3.0, 4.0]])
print("Matriz:", tensor_matriz)
# Tensor de rango 3 (por ejemplo, una "pila" de matrices 2x2)
tensor_rango3 = tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print("Tensor de rango 3:", tensor_rango3)
2. Propiedades de un Tensor
Cada tensor en TensorFlow tiene algunas propiedades clave:
- Forma (
shape
): la dimensión del tensor (ej.,[2, 2]
para una matriz de 2×2). - Rango (
rank
): el número de dimensiones del tensor. - Tipo de datos (
dtype
): el tipo de datos que contiene el tensor, comotf.float32
,tf.int32
, etc.
Podemos explorar estas propiedades:
# Tensor de ejemplo
tensor = tf.constant([[1, 2], [3, 4]], dtype=tf.float32)
# Propiedades
print("Forma:", tensor.shape) # (2, 2)
print("Rango:", tf.rank(tensor)) # 2
print("Tipo de datos:", tensor.dtype) # tf.float32
3. Operaciones en Tensores
Las operaciones en TensorFlow se realizan sobre tensores y devuelven nuevos tensores. TensorFlow ofrece una amplia variedad de operaciones, desde matemáticas básicas hasta funciones complejas.
Operaciones Básicas
# Operaciones de suma, resta, multiplicación y división
a = tf.constant([1, 2, 3], dtype=tf.float32)
b = tf.constant([4, 5, 6], dtype=tf.float32)
print("Suma:", tf.add(a, b)) # [5. 7. 9.]
print("Resta:", tf.subtract(a, b)) # [-3. -3. -3.]
print("Multiplicación:", tf.multiply(a, b)) # [4. 10. 18.]
print("División:", tf.divide(a, b)) # [0.25 0.4 0.5 ]
Producto Matricial
El producto matricial es una operación fundamental en aprendizaje automático. Se realiza con tf.matmul()
.
matriz1 = tf.constant([[1, 2], [3, 4]])
matriz2 = tf.constant([[5, 6], [7, 8]])
print("Producto Matricial:", tf.matmul(matriz1, matriz2))
# Resultado:
# [[19 22]
# [43 50]]
Operaciones de Reducción
Las operaciones de reducción comprimen un tensor en una dimensión menor, como sumar todos los elementos o calcular el promedio.
tensor = tf.constant([[1, 2, 3], [4, 5, 6]])
print("Suma total:", tf.reduce_sum(tensor)) # 21
print("Promedio:", tf.reduce_mean(tensor)) # 3.5
print("Suma por filas:", tf.reduce_sum(tensor, axis=1)) # [6, 15]
print("Suma por columnas:", tf.reduce_sum(tensor, axis=0)) # [5, 7, 9]
4. Otras Operaciones Útiles en TensorFlow
TensorFlow también incluye otras operaciones de manipulación de tensores que son útiles en el procesamiento de datos:
- Transposición de tensores: cambia el orden de las dimensiones de un tensor, útil en redes convolucionales o datos 3D.
tensor = tf.constant([[1, 2, 3], [4, 5, 6]]) print("Transpuesto:", tf.transpose(tensor)) # Resultado: [[1 4] # [2 5] # [3 6]]
- Reshape: cambia la forma de un tensor sin alterar sus datos.
tensor = tf.constant([1, 2, 3, 4, 5, 6]) reshaped_tensor = tf.reshape(tensor, [2, 3]) # Cambia a una matriz de 2x3 print("Reshape:", reshaped_tensor) # Resultado: [[1, 2, 3], # [4, 5, 6]]
- Concatenación: combina múltiples tensores a lo largo de un eje.
tensor1 = tf.constant([[1, 2]]) tensor2 = tf.constant([[3, 4]]) concatenado = tf.concat([tensor1, tensor2], axis=0) # Junta filas print("Concatenado:", concatenado) # Resultado: [[1, 2], # [3, 4]]
Ejemplo Completo: Operaciones en Tensores para Procesamiento de Imágenes
Un ejemplo práctico de operaciones en tensores es el procesamiento de imágenes. Supongamos que tenemos una imagen en escala de grises (tensor de 2D) y queremos realizar varias operaciones en ella.
# Imagen de ejemplo en escala de grises
imagen = tf.constant([[0, 255, 128], [64, 32, 16]], dtype=tf.float32)
# Normalización (llevar el rango de 0 a 1)
imagen_normalizada = imagen / 255.0
print("Imagen normalizada:", imagen_normalizada)
# Redimensionar la imagen a 3x2
imagen_redimensionada = tf.reshape(imagen, [3, 2])
print("Imagen redimensionada:", imagen_redimensionada)
# Calcular el promedio de intensidad
promedio_intensidad = tf.reduce_mean(imagen)
print("Promedio de intensidad:", promedio_intensidad)
Estos conceptos básicos y operaciones son el núcleo de TensorFlow y el aprendizaje profundo, pues permiten manipular y transformar datos en el formato necesario para el entrenamiento de modelos.