single
Операції Редукції
Свайпніть щоб показати меню
У світі операцій над тензорами існує багато завдань, де необхідно зменшити розмірність даних, тобто узагальнити їх по одній або декількох осях. Наприклад, якщо у нас є 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
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат