Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Операції Редукції | Tensor Operations and Execution
Quizzes & Challenges
Quizzes
Challenges
/
Вступ до 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.

Для двовимірного тензора (матриці):

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. Обчислити максимальне значення вологості серед усіх міст для кожного дня.

Примітка

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

Рішення

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

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

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

Секція 2. Розділ 4
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain what the axis parameter means in more detail?

How do I choose which axis to reduce along for my data?

What happens if I use keepdims=True in these operations?

close

Awesome!

Completion rate improved to 6.25

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.

Для двовимірного тензора (матриці):

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Перейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

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

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

Секція 2. Розділ 4
single

single

some-alt