Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Transformaciones | Tensores
Introducción a TensorFlow

bookTransformaciones

Transformaciones de tensores

Esta lección explora las operaciones avanzadas de transformación de tensores.

Las transformaciones de tensores son fundamentales al manipular datos. A medida que se profundiza en tareas de aprendizaje profundo y ciencia de datos, se hace evidente que los datos encontrados no siempre están en el formato deseado. Esta lección presenta métodos en TensorFlow que permiten la manipulación de la estructura y el contenido de los tensores para cumplir con requisitos específicos.

Cambio de forma de tensores

Al trabajar con tensores, en ocasiones es necesario modificar la forma sin alterar los datos subyacentes. tf.reshape() resulta útil en estos casos.

Funcionamiento:

  • El cambio de forma modifica la estructura del tensor, pero no sus datos. El número total de elementos antes y después del cambio de forma debe permanecer igual;
  • Opera "llenando" la nueva forma por filas (de izquierda a derecha, de arriba hacia abajo).
1234567891011121314
import tensorflow as tf # Create a tensor with shape (3, 2) tensor = tf.constant([[1, 2], [3, 4], [5, 6]]) # Reshape the tensor to shape (2, 3) reshaped_tensor = tf.reshape(tensor, (2, 3)) print(reshaped_tensor) print('-' * 50) # Reshape the tensor to shape (6, 1); # The size of the first dimention is determined automatically reshaped_tensor = tf.reshape(tensor, (-1, 1)) print(reshaped_tensor)
copy
Note
Nota

Al especificar la nueva forma, una dimensión puede ser -1. TensorFlow calculará el tamaño de esa dimensión para que el tamaño total permanezca constante.

Esto es especialmente útil cuando se desea alimentar tensores a una red neuronal pero las dimensiones no coinciden con la forma de entrada de la red.

Segmentación

La segmentación permite recuperar una porción de un tensor. Es análoga a la segmentación de listas en Python, pero extendida a tensores multidimensionales.

Funcionamiento:

  • tf.slice() extrae un segmento de un tensor. Requiere el índice inicial para el segmento y el tamaño del segmento;
  • Si el tamaño es -1, indica todos los elementos en esa dimensión.
12345678910111213
import tensorflow as tf # Create a tensor tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Slice tensor to extract sub-tensor from index (0, 1) of size (1, 2) sliced_tensor = tf.slice(tensor, begin=(0, 1), size=(1, 2)) print(sliced_tensor) print('-' * 50) # Slice tensor to extract sub-tensor from index (1, 0) of size (2, 2) sliced_tensor = tf.slice(tensor, (1, 0), (2, 2)) print(sliced_tensor)
copy
Note
Nota

Recuerde siempre el indexado basado en cero de TensorFlow, que es similar al indexado nativo de Python. Útil para extraer características o puntos de datos específicos de un conjunto de datos más grande.

Modificación de datos

Existe otra forma de segmentación que también permite modificar los datos originales, similar a la segmentación de arreglos en NumPy.

Cómo funciona:

  • Usando [], es posible segmentar e indexar tensores fácilmente, de manera similar a la segmentación en NumPy. Este método permite seleccionar filas, columnas o elementos específicos de un tensor;
  • Con tf.Variable(), el tensor se vuelve mutable, permitiendo modificaciones directas mediante segmentación;
  • Para modificar los valores del subtensor seleccionado, utilice el método .assign() con un tensor o lista que coincida con su forma.
12345678910111213
import tensorflow as tf # Create a mutable tensor tensor = tf.Variable([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Change the entire first row tensor[0, :].assign([0, 0, 0]) print(tensor) print('-' * 80) # Modify the second and the third columns tensor[:, 1:3].assign(tf.fill((3,2), 1)) print(tensor)
copy
Note
Nota
  • La sintaxis de segmentación en TensorFlow está en gran medida inspirada en NumPy, por lo que si ya estás familiarizado con NumPy, la transición al mecanismo de segmentación de TensorFlow es sencilla;
  • Siempre asegúrate de utilizar tf.Variable() para cualquier operación que requiera mutabilidad del tensor.

Concatenación

La concatenación permite unir múltiples tensores a lo largo de un eje especificado.

Cómo funciona:

  • tf.concat() combina tensores. El método requiere una lista de tensores que deseas concatenar y el eje a lo largo del cual realizar la operación;
  • El eje es basado en cero. Un eje de 0 se refiere a filas (verticalmente) y un eje de 1 se refiere a columnas (horizontalmente).
123456789101112131415161718
import tensorflow as tf # Create two tensors tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]]) tensor2 = tf.constant([[7, 8, 9]]) # Concatenate tensors vertically (along rows) concatenated_tensor = tf.concat([tensor1, tensor2], axis=0) print(concatenated_tensor) print('-' * 50) # Create another set of tensors tensor3 = tf.constant([[1, 2], [4, 5]]) tensor4 = tf.constant([[3], [6]]) # Concatenate tensors horizontally (along columns) concatenated_tensor = tf.concat([tensor3, tensor4], axis=1) print(concatenated_tensor)
copy
Note
Nota
  • Asegúrese de que los tensores que va a unir tengan dimensiones coincidentes en los ejes que no se concatenan;
  • Esta operación es similar a numpy.concatenate(), pero adaptada para tensores de TensorFlow.
Tarea

Swipe to start coding

Contexto

Estás trabajando con un conjunto de datos compuesto por lecturas de varios sensores ubicados en diferentes localizaciones geográficas. Estos sensores registran datos meteorológicos como temperatura, presión y coordenadas geográficas normalizadas.

Sin embargo, al compilar las lecturas, descubriste que algunos de los datos se registraron incorrectamente.

También recibiste nuevas lecturas de otros sensores que necesitas incluir.

Información del conjunto de datos

  1. main_dataset: Un tensor de forma (6, 4) que representa 6 lecturas. Cada fila es una muestra y las columnas representan las siguientes características:

    • Temperatura (en Celsius);
    • Presión (en hPa);
    • Coordenada de latitud normalizada;
    • Coordenada de longitud normalizada.
  2. error_correction_data: Un tensor de forma (2, 4) que representa 2 lecturas corregidas para datos erróneos en el conjunto principal.

  3. additional_data: Un tensor de forma (3, 4) que representa 3 nuevas lecturas.

Objetivo

Preparar un conjunto de datos corregido y completo para la predicción meteorológica:

  1. Corrección de datos:

    • Se detectó que las lecturas en la 2ª y 5ª filas de main_dataset eran inexactas. Sustituye estas filas en main_dataset por las filas de error_correction_data.
  2. Incorporación de datos adicionales:

    • Concatenar main_dataset con additional_data para incorporar las nuevas lecturas.
  3. Reorganización en lotes:

    • Para el entrenamiento por lotes, divide el conjunto de datos en lotes con 3 lecturas por lote. Reorganiza complete_dataset, donde la primera dimensión representa el tamaño del lote y la segunda dimensión representa el número de lecturas por lote.

Solución

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 11
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

close

Awesome!

Completion rate improved to 5.56

bookTransformaciones

Desliza para mostrar el menú

Transformaciones de tensores

Esta lección explora las operaciones avanzadas de transformación de tensores.

Las transformaciones de tensores son fundamentales al manipular datos. A medida que se profundiza en tareas de aprendizaje profundo y ciencia de datos, se hace evidente que los datos encontrados no siempre están en el formato deseado. Esta lección presenta métodos en TensorFlow que permiten la manipulación de la estructura y el contenido de los tensores para cumplir con requisitos específicos.

Cambio de forma de tensores

Al trabajar con tensores, en ocasiones es necesario modificar la forma sin alterar los datos subyacentes. tf.reshape() resulta útil en estos casos.

Funcionamiento:

  • El cambio de forma modifica la estructura del tensor, pero no sus datos. El número total de elementos antes y después del cambio de forma debe permanecer igual;
  • Opera "llenando" la nueva forma por filas (de izquierda a derecha, de arriba hacia abajo).
1234567891011121314
import tensorflow as tf # Create a tensor with shape (3, 2) tensor = tf.constant([[1, 2], [3, 4], [5, 6]]) # Reshape the tensor to shape (2, 3) reshaped_tensor = tf.reshape(tensor, (2, 3)) print(reshaped_tensor) print('-' * 50) # Reshape the tensor to shape (6, 1); # The size of the first dimention is determined automatically reshaped_tensor = tf.reshape(tensor, (-1, 1)) print(reshaped_tensor)
copy
Note
Nota

Al especificar la nueva forma, una dimensión puede ser -1. TensorFlow calculará el tamaño de esa dimensión para que el tamaño total permanezca constante.

Esto es especialmente útil cuando se desea alimentar tensores a una red neuronal pero las dimensiones no coinciden con la forma de entrada de la red.

Segmentación

La segmentación permite recuperar una porción de un tensor. Es análoga a la segmentación de listas en Python, pero extendida a tensores multidimensionales.

Funcionamiento:

  • tf.slice() extrae un segmento de un tensor. Requiere el índice inicial para el segmento y el tamaño del segmento;
  • Si el tamaño es -1, indica todos los elementos en esa dimensión.
12345678910111213
import tensorflow as tf # Create a tensor tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Slice tensor to extract sub-tensor from index (0, 1) of size (1, 2) sliced_tensor = tf.slice(tensor, begin=(0, 1), size=(1, 2)) print(sliced_tensor) print('-' * 50) # Slice tensor to extract sub-tensor from index (1, 0) of size (2, 2) sliced_tensor = tf.slice(tensor, (1, 0), (2, 2)) print(sliced_tensor)
copy
Note
Nota

Recuerde siempre el indexado basado en cero de TensorFlow, que es similar al indexado nativo de Python. Útil para extraer características o puntos de datos específicos de un conjunto de datos más grande.

Modificación de datos

Existe otra forma de segmentación que también permite modificar los datos originales, similar a la segmentación de arreglos en NumPy.

Cómo funciona:

  • Usando [], es posible segmentar e indexar tensores fácilmente, de manera similar a la segmentación en NumPy. Este método permite seleccionar filas, columnas o elementos específicos de un tensor;
  • Con tf.Variable(), el tensor se vuelve mutable, permitiendo modificaciones directas mediante segmentación;
  • Para modificar los valores del subtensor seleccionado, utilice el método .assign() con un tensor o lista que coincida con su forma.
12345678910111213
import tensorflow as tf # Create a mutable tensor tensor = tf.Variable([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Change the entire first row tensor[0, :].assign([0, 0, 0]) print(tensor) print('-' * 80) # Modify the second and the third columns tensor[:, 1:3].assign(tf.fill((3,2), 1)) print(tensor)
copy
Note
Nota
  • La sintaxis de segmentación en TensorFlow está en gran medida inspirada en NumPy, por lo que si ya estás familiarizado con NumPy, la transición al mecanismo de segmentación de TensorFlow es sencilla;
  • Siempre asegúrate de utilizar tf.Variable() para cualquier operación que requiera mutabilidad del tensor.

Concatenación

La concatenación permite unir múltiples tensores a lo largo de un eje especificado.

Cómo funciona:

  • tf.concat() combina tensores. El método requiere una lista de tensores que deseas concatenar y el eje a lo largo del cual realizar la operación;
  • El eje es basado en cero. Un eje de 0 se refiere a filas (verticalmente) y un eje de 1 se refiere a columnas (horizontalmente).
123456789101112131415161718
import tensorflow as tf # Create two tensors tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]]) tensor2 = tf.constant([[7, 8, 9]]) # Concatenate tensors vertically (along rows) concatenated_tensor = tf.concat([tensor1, tensor2], axis=0) print(concatenated_tensor) print('-' * 50) # Create another set of tensors tensor3 = tf.constant([[1, 2], [4, 5]]) tensor4 = tf.constant([[3], [6]]) # Concatenate tensors horizontally (along columns) concatenated_tensor = tf.concat([tensor3, tensor4], axis=1) print(concatenated_tensor)
copy
Note
Nota
  • Asegúrese de que los tensores que va a unir tengan dimensiones coincidentes en los ejes que no se concatenan;
  • Esta operación es similar a numpy.concatenate(), pero adaptada para tensores de TensorFlow.
Tarea

Swipe to start coding

Contexto

Estás trabajando con un conjunto de datos compuesto por lecturas de varios sensores ubicados en diferentes localizaciones geográficas. Estos sensores registran datos meteorológicos como temperatura, presión y coordenadas geográficas normalizadas.

Sin embargo, al compilar las lecturas, descubriste que algunos de los datos se registraron incorrectamente.

También recibiste nuevas lecturas de otros sensores que necesitas incluir.

Información del conjunto de datos

  1. main_dataset: Un tensor de forma (6, 4) que representa 6 lecturas. Cada fila es una muestra y las columnas representan las siguientes características:

    • Temperatura (en Celsius);
    • Presión (en hPa);
    • Coordenada de latitud normalizada;
    • Coordenada de longitud normalizada.
  2. error_correction_data: Un tensor de forma (2, 4) que representa 2 lecturas corregidas para datos erróneos en el conjunto principal.

  3. additional_data: Un tensor de forma (3, 4) que representa 3 nuevas lecturas.

Objetivo

Preparar un conjunto de datos corregido y completo para la predicción meteorológica:

  1. Corrección de datos:

    • Se detectó que las lecturas en la 2ª y 5ª filas de main_dataset eran inexactas. Sustituye estas filas en main_dataset por las filas de error_correction_data.
  2. Incorporación de datos adicionales:

    • Concatenar main_dataset con additional_data para incorporar las nuevas lecturas.
  3. Reorganización en lotes:

    • Para el entrenamiento por lotes, divide el conjunto de datos en lotes con 3 lecturas por lote. Reorganiza complete_dataset, donde la primera dimensión representa el tamaño del lote y la segunda dimensión representa el número de lecturas por lote.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 11
single

single

some-alt