Transformaciones
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).
1234567891011121314import 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)
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.
12345678910111213import 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)
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.
12345678910111213import 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)
- 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 de1
se refiere a columnas (horizontalmente).
123456789101112131415161718import 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)
- 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.
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
-
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.
-
error_correction_data
: Un tensor de forma(2, 4)
que representa 2 lecturas corregidas para datos erróneos en el conjunto principal. -
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:
-
Corrección de datos:
- Se detectó que las lecturas en la 2ª y 5ª filas de
main_dataset
eran inexactas. Sustituye estas filas enmain_dataset
por las filas deerror_correction_data
.
- Se detectó que las lecturas en la 2ª y 5ª filas de
-
Incorporación de datos adicionales:
- Concatenar
main_dataset
conadditional_data
para incorporar las nuevas lecturas.
- Concatenar
-
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.
- Para el entrenamiento por lotes, divide el conjunto de datos en lotes con 3 lecturas por lote. Reorganiza
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 5.56
Transformaciones
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).
1234567891011121314import 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)
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.
12345678910111213import 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)
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.
12345678910111213import 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)
- 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 de1
se refiere a columnas (horizontalmente).
123456789101112131415161718import 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)
- 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.
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
-
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.
-
error_correction_data
: Un tensor de forma(2, 4)
que representa 2 lecturas corregidas para datos erróneos en el conjunto principal. -
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:
-
Corrección de datos:
- Se detectó que las lecturas en la 2ª y 5ª filas de
main_dataset
eran inexactas. Sustituye estas filas enmain_dataset
por las filas deerror_correction_data
.
- Se detectó que las lecturas en la 2ª y 5ª filas de
-
Incorporación de datos adicionales:
- Concatenar
main_dataset
conadditional_data
para incorporar las nuevas lecturas.
- Concatenar
-
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.
- Para el entrenamiento por lotes, divide el conjunto de datos en lotes con 3 lecturas por lote. Reorganiza
Solución
¡Gracias por tus comentarios!
single