Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Арифметика | Tensor Operations and Execution
Вступ до TensorFlow

Арифметика

Арифметичні операції

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

Додавання

Для додавання тензорів можна використовувати методи tf.add(), .assign_add() та знак плюс +. Також можна застосовувати бродкастинг як із плюсом +, так і з методом tf.add().

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

broadcasting_1d
12345678910111213141516171819202122232425
import 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)
Note
Примітка

Для методу зміни на місці основний елемент повинен бути змінного типу Variable, а не константою.

Віднімання

Маємо аналогічні всі методи для віднімання, як і для додавання:

  • tf.add() змінюється на tf.subtract();
  • Знак плюс + змінюється на мінус -;
  • .assign_add() змінюється на .assign_sub().
123456789101112131415161718192021
import 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();
  • Знак плюс + відповідає знаку зірочки *.
1234567891011121314151617
import 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() та знака /.

1234567891011121314151617
import 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 — це термін, який описує, як тензори з різними формами автоматично та неявно обробляються під час арифметичних операцій так, що вони виглядають так, ніби мають однакову форму. Це дозволяє виконувати операції над тензорами різних розмірів без необхідності попереднього явного зміни їх розміру.

Note
Додаткове вивчення

Для глибшого розуміння бродкастингу можна звернутися до офіційної сторінки документації NumPy з цієї теми.

бродкастинг_2d
Все було зрозуміло?

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

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

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

single

Арифметика

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

Арифметичні операції

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

Додавання

Для додавання тензорів можна використовувати методи tf.add(), .assign_add() та знак плюс +. Також можна застосовувати бродкастинг як із плюсом +, так і з методом tf.add().

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

broadcasting_1d
12345678910111213141516171819202122232425
import 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)
Note
Примітка

Для методу зміни на місці основний елемент повинен бути змінного типу Variable, а не константою.

Віднімання

Маємо аналогічні всі методи для віднімання, як і для додавання:

  • tf.add() змінюється на tf.subtract();
  • Знак плюс + змінюється на мінус -;
  • .assign_add() змінюється на .assign_sub().
123456789101112131415161718192021
import 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();
  • Знак плюс + відповідає знаку зірочки *.
1234567891011121314151617
import 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() та знака /.

1234567891011121314151617
import 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 — це термін, який описує, як тензори з різними формами автоматично та неявно обробляються під час арифметичних операцій так, що вони виглядають так, ніби мають однакову форму. Це дозволяє виконувати операції над тензорами різних розмірів без необхідності попереднього явного зміни їх розміру.

Note
Додаткове вивчення

Для глибшого розуміння бродкастингу можна звернутися до офіційної сторінки документації NumPy з цієї теми.

бродкастинг_2d
Завдання

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

Дано набір матриць, виконайте наступні операції:

  1. Додавання на місці для матриці 2x2.
  2. Віднімання за допомогою методу tf.subtract() для матриці 2x3.
  3. Множення з трансляцією (broadcasting) матриці 3x2 з іншою матрицею 1x2.
  4. Ділення з трансляцією між двома матрицями: одна розміром 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-й осі (другий параметр форми). Це залежить від форми матриць.

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

some-alt