Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Базові Операції: Арифметика | Тензори
Вступ до TensorFlow

bookБазові Операції: Арифметика

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

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

Додавання

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

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

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

Для методу inplace основним елементом має бути змінний тип 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)
copy

Множення (покомпонентне)

Для множення не існує методу, що змінює об'єкт на місці, оскільки матричне множення завжди створює новий об'єкт. Проте інші операції мають свої відповідники:

  • 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)
copy

Ділення

Аналогічно до множення, але з використанням 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)
copy

Трансляція (Broadcasting)

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

Note
Дізнатися більше

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

Завдання

Swipe to start coding

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

  1. Додавання на місці для матриці 2x2.
  2. Віднімання за допомогою методу tf.subtract() для матриці 2x3.
  3. Множення з трансляцією матриці 3x2 з іншою матрицею 1x2.
  4. Ділення з трансляцією між двома матрицями, одна розміром 2x3, інша — 2x1.

Примітка

Зверніть увагу на поведінку трансляції під час операцій множення та ділення. При множенні це подібно до множення [[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-й осі (другий параметр форми). Це залежить від форми матриць.

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

close

Awesome!

Completion rate improved to 5.56

bookБазові Операції: Арифметика

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

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

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

Додавання

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

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

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

Для методу inplace основним елементом має бути змінний тип 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)
copy

Множення (покомпонентне)

Для множення не існує методу, що змінює об'єкт на місці, оскільки матричне множення завжди створює новий об'єкт. Проте інші операції мають свої відповідники:

  • 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)
copy

Ділення

Аналогічно до множення, але з використанням 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)
copy

Трансляція (Broadcasting)

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

Note
Дізнатися більше

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

Завдання

Swipe to start coding

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

  1. Додавання на місці для матриці 2x2.
  2. Віднімання за допомогою методу tf.subtract() для матриці 2x3.
  3. Множення з трансляцією матриці 3x2 з іншою матрицею 1x2.
  4. Ділення з трансляцією між двома матрицями, одна розміром 2x3, інша — 2x1.

Примітка

Зверніть увагу на поведінку трансляції під час операцій множення та ділення. При множенні це подібно до множення [[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Перейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

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

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

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

single

some-alt