Операції Згортання
Операції редукції
У сфері операцій над тензорами існує багато завдань, де необхідно зменшити розмірність даних, або узагальнити їх по одній чи декількох осях. Наприклад, якщо маємо 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 існує багато інших операцій редукції, але вони працюють за тими ж принципами.
Дякуємо за ваш відгук!
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 існує багато інших операцій редукції, але вони працюють за тими ж принципами.
Проведіть, щоб почати кодувати
Передумови
Ви — дата-сайентіст у метеорологічному дослідницькому агентстві. Вам надали тензор із погодними показниками з різних міст за кілька днів. Тензор має таку структуру:
- Вимір 1: представляє різні міста;
- Вимір 2: представляє різні дні.
- Кожен елемент тензора — це кортеж із
(temperature, humidity).
Мета
- Обчислити середню температуру для кожного міста за всі дні.
- Обчислити максимальне значення вологості серед усіх міст для кожного дня.
Примітка
У цьому тензорі перше число в кожному кортежі означає температуру (у градусах Цельсія), а друге — вологість (у відсотках) для відповідного дня та міста.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат