Операції Редукції
Операції зведення
У світі операцій над тензорами часто виникає необхідність зменшити розмірність даних, тобто узагальнити їх по одній або декількох осях. Наприклад, якщо у нас є 2D тензор (матриця), операція зведення може обчислити значення для кожного рядка або стовпця, в результаті чого отримаємо 1D тензор (вектор). TensorFlow пропонує набір операцій для цього, і в цьому розділі ми розглянемо найпоширеніші операції зведення.
Сума, середнє, максимум і мінімум
TensorFlow надає такі методи для цих обчислень:
tf.reduce_sum(): обчислює суму всіх елементів тензора або по певній осі;tf.reduce_mean(): обчислює середнє значення елементів тензора;tf.reduce_max(): визначає максимальне значення у тензорі;tf.reduce_min(): знаходить мінімальне значення у тензорі.
12345678910111213141516171819import tensorflow as tf tensor = tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) # Calculate sum of all elements total_sum = tf.reduce_sum(tensor) print("Total Sum:", total_sum.numpy()) # Calculate mean of all elements mean_val = tf.reduce_mean(tensor) print("Mean Value:", mean_val.numpy()) # Determine the maximum value max_val = tf.reduce_max(tensor) print("Maximum Value:", max_val.numpy()) # Find the minimum value min_val = tf.reduce_min(tensor) print("Minimum Value:", min_val.numpy())
Метод .numpy() використовувався для перетворення тензорів у масиви NumPy, що забезпечує більш наочне відображення чисел при виведенні.
Операції вздовж певних осей
Тензори можуть мати декілька вимірів, і іноді потрібно виконати редукцію вздовж певної осі. Параметр axis дозволяє вказати, по якій осі або осях виконувати редукцію.
axis=0: виконати операцію по рядках (результат — вектор-стовпець);axis=1: виконати операцію по стовпцях (результат — вектор-рядок);- Можливо виконати редукцію одночасно по декількох осях, передавши список у параметр
axis; - Якщо ранг тензора зменшується, можна використати
keepdims=True, щоб зберегти зменшену вимірність як 1.
Для 2D тензора (матриці):
1234567891011121314151617181920import tensorflow as tf tensor = tf.constant([[1., 2.], [3., 4.], [5., 6.]]) # Calculate the sum of each column col_sum = tf.reduce_sum(tensor, axis=0) print("Column-wise Sum:", col_sum.numpy()) # Calculate the maximum of each row col_max = tf.reduce_max(tensor, axis=1) print("Row-wise Max:", col_max.numpy()) # Calculate the mean of the whole tensor (reduce along both directions) # Equivalent to not specifying the axis at all total_mean = tf.reduce_mean(tensor, axis=(0, 1)) print("Total Mean:", total_mean.numpy()) # Calculate the mean of the whole tensor (keeping reduced dimensions) total_mean_dim = tf.reduce_mean(tensor, axis=(0, 1), keepdims=True) print("Total Mean (saving dimensions):", total_mean_dim.numpy())
Під час виконання операції редукції по певній осі ви фактично усуваєте цю вісь з тензора, агрегуючи всі тензори в межах цієї осі поелементно. Такий самий ефект зберігається для будь-якої кількості вимірів.
Ось як це виглядає для 3D тензора:
12345678910111213141516171819import tensorflow as tf tensor = tf.constant([ [[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]] ]) # Calculate the sum along axis 0 sum_0 = tf.reduce_sum(tensor, axis=0) print("Sum axis 0:\n", sum_0.numpy()) # Calculate the sum along axis 1 sum_1 = tf.reduce_sum(tensor, axis=1) print("Sum axis 1:\n", sum_1.numpy()) # Calculate the sum along axes 0 and 1 sum_0_1 = tf.reduce_sum(tensor, axis=(0, 1)) print("Sum axes 0 and 1:\n", sum_0_1.numpy())
У TensorFlow існує багато інших операцій редукції, але вони працюють за тими ж принципами.
Swipe to start coding
Передумови
Ви — дата-сайентіст у метеорологічному агентстві. Вам надали тензор із погодними показниками з різних міст за кілька днів. Тензор має таку структуру:
- Вимір 1: представляє різні міста;
- Вимір 2: представляє різні дні.
- Кожен елемент тензора — це кортеж із
(temperature, humidity).
Мета
- Обчислити середню температуру для кожного міста за всі дні.
- Обчислити максимальне значення вологості серед усіх міст для кожного дня.
Примітка
У цьому тензорі перше число в кожному кортежі означає температуру (у градусах Цельсія), а друге — вологість (у відсотках) для відповідного дня та міста.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 5.56
Операції Редукції
Свайпніть щоб показати меню
Операції зведення
У світі операцій над тензорами часто виникає необхідність зменшити розмірність даних, тобто узагальнити їх по одній або декількох осях. Наприклад, якщо у нас є 2D тензор (матриця), операція зведення може обчислити значення для кожного рядка або стовпця, в результаті чого отримаємо 1D тензор (вектор). TensorFlow пропонує набір операцій для цього, і в цьому розділі ми розглянемо найпоширеніші операції зведення.
Сума, середнє, максимум і мінімум
TensorFlow надає такі методи для цих обчислень:
tf.reduce_sum(): обчислює суму всіх елементів тензора або по певній осі;tf.reduce_mean(): обчислює середнє значення елементів тензора;tf.reduce_max(): визначає максимальне значення у тензорі;tf.reduce_min(): знаходить мінімальне значення у тензорі.
12345678910111213141516171819import tensorflow as tf tensor = tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) # Calculate sum of all elements total_sum = tf.reduce_sum(tensor) print("Total Sum:", total_sum.numpy()) # Calculate mean of all elements mean_val = tf.reduce_mean(tensor) print("Mean Value:", mean_val.numpy()) # Determine the maximum value max_val = tf.reduce_max(tensor) print("Maximum Value:", max_val.numpy()) # Find the minimum value min_val = tf.reduce_min(tensor) print("Minimum Value:", min_val.numpy())
Метод .numpy() використовувався для перетворення тензорів у масиви NumPy, що забезпечує більш наочне відображення чисел при виведенні.
Операції вздовж певних осей
Тензори можуть мати декілька вимірів, і іноді потрібно виконати редукцію вздовж певної осі. Параметр axis дозволяє вказати, по якій осі або осях виконувати редукцію.
axis=0: виконати операцію по рядках (результат — вектор-стовпець);axis=1: виконати операцію по стовпцях (результат — вектор-рядок);- Можливо виконати редукцію одночасно по декількох осях, передавши список у параметр
axis; - Якщо ранг тензора зменшується, можна використати
keepdims=True, щоб зберегти зменшену вимірність як 1.
Для 2D тензора (матриці):
1234567891011121314151617181920import tensorflow as tf tensor = tf.constant([[1., 2.], [3., 4.], [5., 6.]]) # Calculate the sum of each column col_sum = tf.reduce_sum(tensor, axis=0) print("Column-wise Sum:", col_sum.numpy()) # Calculate the maximum of each row col_max = tf.reduce_max(tensor, axis=1) print("Row-wise Max:", col_max.numpy()) # Calculate the mean of the whole tensor (reduce along both directions) # Equivalent to not specifying the axis at all total_mean = tf.reduce_mean(tensor, axis=(0, 1)) print("Total Mean:", total_mean.numpy()) # Calculate the mean of the whole tensor (keeping reduced dimensions) total_mean_dim = tf.reduce_mean(tensor, axis=(0, 1), keepdims=True) print("Total Mean (saving dimensions):", total_mean_dim.numpy())
Під час виконання операції редукції по певній осі ви фактично усуваєте цю вісь з тензора, агрегуючи всі тензори в межах цієї осі поелементно. Такий самий ефект зберігається для будь-якої кількості вимірів.
Ось як це виглядає для 3D тензора:
12345678910111213141516171819import tensorflow as tf tensor = tf.constant([ [[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]] ]) # Calculate the sum along axis 0 sum_0 = tf.reduce_sum(tensor, axis=0) print("Sum axis 0:\n", sum_0.numpy()) # Calculate the sum along axis 1 sum_1 = tf.reduce_sum(tensor, axis=1) print("Sum axis 1:\n", sum_1.numpy()) # Calculate the sum along axes 0 and 1 sum_0_1 = tf.reduce_sum(tensor, axis=(0, 1)) print("Sum axes 0 and 1:\n", sum_0_1.numpy())
У TensorFlow існує багато інших операцій редукції, але вони працюють за тими ж принципами.
Swipe to start coding
Передумови
Ви — дата-сайентіст у метеорологічному агентстві. Вам надали тензор із погодними показниками з різних міст за кілька днів. Тензор має таку структуру:
- Вимір 1: представляє різні міста;
- Вимір 2: представляє різні дні.
- Кожен елемент тензора — це кортеж із
(temperature, humidity).
Мета
- Обчислити середню температуру для кожного міста за всі дні.
- Обчислити максимальне значення вологості серед усіх міст для кожного дня.
Примітка
У цьому тензорі перше число в кожному кортежі означає температуру (у градусах Цельсія), а друге — вологість (у відсотках) для відповідного дня та міста.
Рішення
Дякуємо за ваш відгук!
single