Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Операції Згортання | Tensor Operations and Execution
Вступ до TensorFlow

Операції Згортання

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

У сфері операцій над тензорами існує багато завдань, де необхідно зменшити розмірність даних, або узагальнити їх по одній чи декількох осях. Наприклад, якщо маємо 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())
Note
Примітка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

single

Операції Згортання

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

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

У сфері операцій над тензорами існує багато завдань, де необхідно зменшити розмірність даних, або узагальнити їх по одній чи декількох осях. Наприклад, якщо маємо 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())
Note
Примітка

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

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

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

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

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

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

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

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

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

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

Завдання

Проведіть, щоб почати кодувати

Передумови

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

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

Мета

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

Примітка

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

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

some-alt