Арифметика
Арифметичні операції
TensorFlow надає численні арифметичні операції для роботи з тензорами. Ці операції, як і багато інших у TensorFlow, підтримують бродкастинг, що спрощує виконання поелементних операцій над тензорами різних форм.
Додавання
Для додавання тензорів можна використовувати методи tf.add(), .assign_add() та знак плюс +. Також можна застосовувати бродкастинг як із плюсом +, так і з методом tf.add().
Бродкастинг дозволяє виконувати поелементні операції над тензорами різних, але сумісних форм, віртуально розширюючи менший тензор до розміру більшого тензора.
12345678910111213141516171819202122232425import tensorflow as tf # Create two tensors a = tf.Variable([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise addition with TF method c1 = tf.add(a, b) # Same as `c1` calculation, but shorter c2 = a + b # Using broadcasting; # Same as `[1, 2, 3] + [3, 3, 3]` c3 = a + 3 # The most efficient one; # Changes the object inplace without creating a new one; # Result is the same as for `c1` and `c2`. a.assign_add(b) print('TF method:\t', c1) print('Plus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
Для методу зміни на місці основний елемент повинен бути змінного типу Variable, а не константою.
Віднімання
Маємо аналогічні всі методи для віднімання, як і для додавання:
tf.add()змінюється наtf.subtract();- Знак плюс
+змінюється на мінус-; .assign_add()змінюється на.assign_sub().
123456789101112131415161718192021import tensorflow as tf # Create two tensors a = tf.Variable([4, 5, 6]) b = tf.constant([1, 2, 3]) # Perform element-wise substraction c1 = tf.subtract(a, b) c2 = a - b # Using broadcasting; # Same as `[4, 5, 6] - [3, 3, 3]` c3 = a - 3 # Inplace substraction a.assign_sub(b) print('TF method:\t', c1) print('Minus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
Множення (поелементне)
Для множення не існує методу зі зміною на місці, оскільки матричне множення завжди створює новий об'єкт. Проте інші операції мають свої відповідники:
tf.add()відповідаєtf.multiply();- Знак плюс
+відповідає знаку зірочки*.
1234567891011121314151617import tensorflow as tf # Create two tensors a = tf.constant([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise multiplication c1 = tf.multiply(a, b) c2 = a * b # Using broadcasting; # Same as `[1, 2, 3] * [3, 3, 3]` c3 = a * 3 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
Ділення
Аналогічно множенню, але з використанням tf.divide() та знака /.
1234567891011121314151617import tensorflow as tf # Create two tensors a = tf.constant([6, 8, 10]) b = tf.constant([2, 4, 5]) # Perform element-wise division c1 = tf.divide(a, b) c2 = a / b # Using broadcasting; # Same as `[6, 8, 10] / [2, 2, 2]` c3 = a / 2 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
Broadcasting
Broadcasting — це термін, який описує, як тензори з різними формами автоматично та неявно обробляються під час арифметичних операцій так, що вони виглядають так, ніби мають однакову форму. Це дозволяє виконувати операції над тензорами різних розмірів без необхідності попереднього явного зміни їх розміру.
Для глибшого розуміння бродкастингу можна звернутися до офіційної сторінки документації NumPy з цієї теми.
Дякуємо за ваш відгук!
single
Арифметика
Свайпніть щоб показати меню
Арифметичні операції
TensorFlow надає численні арифметичні операції для роботи з тензорами. Ці операції, як і багато інших у TensorFlow, підтримують бродкастинг, що спрощує виконання поелементних операцій над тензорами різних форм.
Додавання
Для додавання тензорів можна використовувати методи tf.add(), .assign_add() та знак плюс +. Також можна застосовувати бродкастинг як із плюсом +, так і з методом tf.add().
Бродкастинг дозволяє виконувати поелементні операції над тензорами різних, але сумісних форм, віртуально розширюючи менший тензор до розміру більшого тензора.
12345678910111213141516171819202122232425import tensorflow as tf # Create two tensors a = tf.Variable([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise addition with TF method c1 = tf.add(a, b) # Same as `c1` calculation, but shorter c2 = a + b # Using broadcasting; # Same as `[1, 2, 3] + [3, 3, 3]` c3 = a + 3 # The most efficient one; # Changes the object inplace without creating a new one; # Result is the same as for `c1` and `c2`. a.assign_add(b) print('TF method:\t', c1) print('Plus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
Для методу зміни на місці основний елемент повинен бути змінного типу Variable, а не константою.
Віднімання
Маємо аналогічні всі методи для віднімання, як і для додавання:
tf.add()змінюється наtf.subtract();- Знак плюс
+змінюється на мінус-; .assign_add()змінюється на.assign_sub().
123456789101112131415161718192021import tensorflow as tf # Create two tensors a = tf.Variable([4, 5, 6]) b = tf.constant([1, 2, 3]) # Perform element-wise substraction c1 = tf.subtract(a, b) c2 = a - b # Using broadcasting; # Same as `[4, 5, 6] - [3, 3, 3]` c3 = a - 3 # Inplace substraction a.assign_sub(b) print('TF method:\t', c1) print('Minus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
Множення (поелементне)
Для множення не існує методу зі зміною на місці, оскільки матричне множення завжди створює новий об'єкт. Проте інші операції мають свої відповідники:
tf.add()відповідаєtf.multiply();- Знак плюс
+відповідає знаку зірочки*.
1234567891011121314151617import tensorflow as tf # Create two tensors a = tf.constant([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise multiplication c1 = tf.multiply(a, b) c2 = a * b # Using broadcasting; # Same as `[1, 2, 3] * [3, 3, 3]` c3 = a * 3 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
Ділення
Аналогічно множенню, але з використанням tf.divide() та знака /.
1234567891011121314151617import tensorflow as tf # Create two tensors a = tf.constant([6, 8, 10]) b = tf.constant([2, 4, 5]) # Perform element-wise division c1 = tf.divide(a, b) c2 = a / b # Using broadcasting; # Same as `[6, 8, 10] / [2, 2, 2]` c3 = a / 2 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
Broadcasting
Broadcasting — це термін, який описує, як тензори з різними формами автоматично та неявно обробляються під час арифметичних операцій так, що вони виглядають так, ніби мають однакову форму. Це дозволяє виконувати операції над тензорами різних розмірів без необхідності попереднього явного зміни їх розміру.
Для глибшого розуміння бродкастингу можна звернутися до офіційної сторінки документації NumPy з цієї теми.
Проведіть, щоб почати кодувати
Дано набір матриць, виконайте наступні операції:
- Додавання на місці для матриці 2x2.
- Віднімання за допомогою методу
tf.subtract()для матриці 2x3. - Множення з трансляцією (broadcasting) матриці 3x2 з іншою матрицею 1x2.
- Ділення з трансляцією між двома матрицями: одна розміром 2x3, інша — 2x1.
Примітка
Зверніть увагу на поведінку трансляції (broadcasting) під час операцій множення та ділення. При множенні це подібно до множення
[[1, 2], [3, 4], [5, 6]]на[[2, 4], [2, 4], [2, 4]]. При діленні це подібно до ділення[[2, 4, 6], [4, 8, 12]]на[[2, 2, 2], [4, 4, 4]].У першому випадку трансляція розширює матрицю по 0-й осі (перший параметр форми), у другому випадку — по 1-й осі (другий параметр форми). Це залежить від форми матриць.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат