Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Операції Редукції | Тензори
Вступ до TensorFlow

bookОперації Редукції

Операції зведення

У світі операцій над тензорами часто виникає необхідність зменшити розмірність даних, тобто узагальнити їх по одній або декількох осях. Наприклад, якщо у нас є 2D тензор (матриця), операція зведення може обчислити значення для кожного рядка або стовпця, в результаті чого отримаємо 1D тензор (вектор). TensorFlow пропонує набір операцій для цього, і в цьому розділі ми розглянемо найпоширеніші операції зведення.

Сума, середнє, максимум і мінімум

TensorFlow надає такі методи для цих обчислень:

  • tf.reduce_sum(): обчислює суму всіх елементів тензора або по певній осі;
  • tf.reduce_mean(): обчислює середнє значення елементів тензора;
  • tf.reduce_max(): визначає максимальне значення у тензорі;
  • tf.reduce_min(): знаходить мінімальне значення у тензорі.
12345678910111213141516171819
import 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())
copy
Note
Примітка

Метод .numpy() використовувався для перетворення тензорів у масиви NumPy, що забезпечує більш наочне відображення чисел при виведенні.

Операції вздовж певних осей

Тензори можуть мати декілька вимірів, і іноді потрібно виконати редукцію вздовж певної осі. Параметр axis дозволяє вказати, по якій осі або осях виконувати редукцію.

  • axis=0: виконати операцію по рядках (результат — вектор-стовпець);
  • axis=1: виконати операцію по стовпцях (результат — вектор-рядок);
  • Можливо виконати редукцію одночасно по декількох осях, передавши список у параметр axis;
  • Якщо ранг тензора зменшується, можна використати keepdims=True, щоб зберегти зменшену вимірність як 1.

Для 2D тензора (матриці):

1234567891011121314151617181920
import 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())
copy
Note
Примітка

Під час виконання операції редукції по певній осі ви фактично усуваєте цю вісь з тензора, агрегуючи всі тензори в межах цієї осі поелементно. Такий самий ефект зберігається для будь-якої кількості вимірів.

Ось як це виглядає для 3D тензора:

12345678910111213141516171819
import 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())
copy
Note
Примітка

У TensorFlow існує багато інших операцій редукції, але вони працюють за тими ж принципами.

Завдання

Swipe to start coding

Передумови

Ви — дата-сайентіст у метеорологічному агентстві. Вам надали тензор із погодними показниками з різних міст за кілька днів. Тензор має таку структуру:

  • Вимір 1: представляє різні міста;
  • Вимір 2: представляє різні дні.
  • Кожен елемент тензора — це кортеж із (temperature, humidity).

Мета

  1. Обчислити середню температуру для кожного міста за всі дні.
  2. Обчислити максимальне значення вологості серед усіх міст для кожного дня.

Примітка

У цьому тензорі перше число в кожному кортежі означає температуру (у градусах Цельсія), а друге — вологість (у відсотках) для відповідного дня та міста.

Рішення

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 12
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

close

Awesome!

Completion rate improved to 5.56

bookОперації Редукції

Свайпніть щоб показати меню

Операції зведення

У світі операцій над тензорами часто виникає необхідність зменшити розмірність даних, тобто узагальнити їх по одній або декількох осях. Наприклад, якщо у нас є 2D тензор (матриця), операція зведення може обчислити значення для кожного рядка або стовпця, в результаті чого отримаємо 1D тензор (вектор). TensorFlow пропонує набір операцій для цього, і в цьому розділі ми розглянемо найпоширеніші операції зведення.

Сума, середнє, максимум і мінімум

TensorFlow надає такі методи для цих обчислень:

  • tf.reduce_sum(): обчислює суму всіх елементів тензора або по певній осі;
  • tf.reduce_mean(): обчислює середнє значення елементів тензора;
  • tf.reduce_max(): визначає максимальне значення у тензорі;
  • tf.reduce_min(): знаходить мінімальне значення у тензорі.
12345678910111213141516171819
import 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())
copy
Note
Примітка

Метод .numpy() використовувався для перетворення тензорів у масиви NumPy, що забезпечує більш наочне відображення чисел при виведенні.

Операції вздовж певних осей

Тензори можуть мати декілька вимірів, і іноді потрібно виконати редукцію вздовж певної осі. Параметр axis дозволяє вказати, по якій осі або осях виконувати редукцію.

  • axis=0: виконати операцію по рядках (результат — вектор-стовпець);
  • axis=1: виконати операцію по стовпцях (результат — вектор-рядок);
  • Можливо виконати редукцію одночасно по декількох осях, передавши список у параметр axis;
  • Якщо ранг тензора зменшується, можна використати keepdims=True, щоб зберегти зменшену вимірність як 1.

Для 2D тензора (матриці):

1234567891011121314151617181920
import 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())
copy
Note
Примітка

Під час виконання операції редукції по певній осі ви фактично усуваєте цю вісь з тензора, агрегуючи всі тензори в межах цієї осі поелементно. Такий самий ефект зберігається для будь-якої кількості вимірів.

Ось як це виглядає для 3D тензора:

12345678910111213141516171819
import 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())
copy
Note
Примітка

У TensorFlow існує багато інших операцій редукції, але вони працюють за тими ж принципами.

Завдання

Swipe to start coding

Передумови

Ви — дата-сайентіст у метеорологічному агентстві. Вам надали тензор із погодними показниками з різних міст за кілька днів. Тензор має таку структуру:

  • Вимір 1: представляє різні міста;
  • Вимір 2: представляє різні дні.
  • Кожен елемент тензора — це кортеж із (temperature, humidity).

Мета

  1. Обчислити середню температуру для кожного міста за всі дні.
  2. Обчислити максимальне значення вологості серед усіх міст для кожного дня.

Примітка

У цьому тензорі перше число в кожному кортежі означає температуру (у градусах Цельсія), а друге — вологість (у відсотках) для відповідного дня та міста.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 12
single

single

some-alt