Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Виконання Графа | Основи TensorFlow
Вступ до TensorFlow

bookВиконання Графа

Декоратор функції

Декоратор функції — це інструмент, який «обгортає» функцію для зміни її поведінки. У TensorFlow найчастіше використовується декоратор @tf.function, який перетворює функцію Python на граф TensorFlow.

Призначення @tf.function

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

Приклад

Для кращого розуміння наведено приклад.

1234567891011
import tensorflow as tf # Define a simple function and decorate it with `@tf.function` @tf.function def compute_area(radius): return 3.1415 * radius ** 2 # Call the function area = compute_area(tf.constant(3.0)) print(f"The area is: {area.numpy()}")
copy

У цьому коді функція compute_area() перетворюється на граф TensorFlow, що дозволяє виконувати її швидше та ефективніше.

Як працює виконання графа?

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

У таких випадках застосовується декоратор @tf.function та виконання графа. Коли ви використовуєте декоратор @tf.function для функції, TensorFlow перетворює цю функцію на статичний граф обчислень операцій.

Техніки оптимізації

  1. Оптимізація графа: TensorFlow оптимізує граф, видаляючи невикористані вузли, об'єднуючи дублікати підграфів та виконуючи інші оптимізації на рівні графа. Це призводить до швидшого виконання та зменшення використання пам'яті.
  2. Швидше виконання: графи виконуються швидше, ніж операції в режимі eager, оскільки зменшується навантаження на Python. Python не бере участі у виконанні графа, що усуває накладні витрати на виклики інтерпретатора Python.
  3. Паралелізм і розподілення: графи дозволяють TensorFlow легко визначати можливості для паралелізму та розподіляти обчислення між кількома пристроями, такими як CPU та GPU.
  4. Кешування та повторне використання: коли функція, декорована @tf.function, викликається з тією ж сигнатурою вхідних даних, TensorFlow повторно використовує раніше створений граф, уникаючи необхідності створювати граф заново, що економить час.

Приклад із Gradient Tape

1234567891011
import tensorflow as tf @tf.function def compute_gradient(x): with tf.GradientTape() as tape: y = x * x * x return tape.gradient(y, x) x = tf.Variable(3.0) grad = compute_gradient(x) print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
copy

У цьому прикладі compute_gradient — це функція, яка обчислює градієнт y = x^3 у заданій точці x. Декоратор @tf.function гарантує, що функція виконується як граф TensorFlow.

Приклад з умовною логікою

1234567891011121314
import tensorflow as tf @tf.function def compute_gradient_conditional(x): with tf.GradientTape() as tape: if tf.reduce_sum(x) > 0: y = x * x else: y = x * x * x return tape.gradient(y, x) x = tf.Variable([-2.0, 2.0]) grad = compute_gradient_conditional(x) print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
copy

У цьому прикладі функція обчислює різні градієнти залежно від умови. Декоратор TensorFlow @tf.function не лише перетворює статичний граф обчислень, а й ефективно обробляє динамічні елементи, такі як умовні оператори та цикли.

Завдання

Swipe to start coding

У цьому завданні ви порівняєте час виконання двох функцій TensorFlow, які виконують множення матриць: одна з декоратором @tf.function, а інша — без нього.

Кроки

  1. Визначте функцію matrix_multiply_optimized, переконавшись, що вона містить декоратор @tf.function.
  2. Завершіть обидві функції, обчисливши середнє значення отриманих матриць.
  3. Згенеруйте дві рівномірно розподілені випадкові матриці за допомогою функцій генерації випадкових матриць TensorFlow.

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

close

Awesome!

Completion rate improved to 5.56

bookВиконання Графа

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

Декоратор функції

Декоратор функції — це інструмент, який «обгортає» функцію для зміни її поведінки. У TensorFlow найчастіше використовується декоратор @tf.function, який перетворює функцію Python на граф TensorFlow.

Призначення @tf.function

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

Приклад

Для кращого розуміння наведено приклад.

1234567891011
import tensorflow as tf # Define a simple function and decorate it with `@tf.function` @tf.function def compute_area(radius): return 3.1415 * radius ** 2 # Call the function area = compute_area(tf.constant(3.0)) print(f"The area is: {area.numpy()}")
copy

У цьому коді функція compute_area() перетворюється на граф TensorFlow, що дозволяє виконувати її швидше та ефективніше.

Як працює виконання графа?

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

У таких випадках застосовується декоратор @tf.function та виконання графа. Коли ви використовуєте декоратор @tf.function для функції, TensorFlow перетворює цю функцію на статичний граф обчислень операцій.

Техніки оптимізації

  1. Оптимізація графа: TensorFlow оптимізує граф, видаляючи невикористані вузли, об'єднуючи дублікати підграфів та виконуючи інші оптимізації на рівні графа. Це призводить до швидшого виконання та зменшення використання пам'яті.
  2. Швидше виконання: графи виконуються швидше, ніж операції в режимі eager, оскільки зменшується навантаження на Python. Python не бере участі у виконанні графа, що усуває накладні витрати на виклики інтерпретатора Python.
  3. Паралелізм і розподілення: графи дозволяють TensorFlow легко визначати можливості для паралелізму та розподіляти обчислення між кількома пристроями, такими як CPU та GPU.
  4. Кешування та повторне використання: коли функція, декорована @tf.function, викликається з тією ж сигнатурою вхідних даних, TensorFlow повторно використовує раніше створений граф, уникаючи необхідності створювати граф заново, що економить час.

Приклад із Gradient Tape

1234567891011
import tensorflow as tf @tf.function def compute_gradient(x): with tf.GradientTape() as tape: y = x * x * x return tape.gradient(y, x) x = tf.Variable(3.0) grad = compute_gradient(x) print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
copy

У цьому прикладі compute_gradient — це функція, яка обчислює градієнт y = x^3 у заданій точці x. Декоратор @tf.function гарантує, що функція виконується як граф TensorFlow.

Приклад з умовною логікою

1234567891011121314
import tensorflow as tf @tf.function def compute_gradient_conditional(x): with tf.GradientTape() as tape: if tf.reduce_sum(x) > 0: y = x * x else: y = x * x * x return tape.gradient(y, x) x = tf.Variable([-2.0, 2.0]) grad = compute_gradient_conditional(x) print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
copy

У цьому прикладі функція обчислює різні градієнти залежно від умови. Декоратор TensorFlow @tf.function не лише перетворює статичний граф обчислень, а й ефективно обробляє динамічні елементи, такі як умовні оператори та цикли.

Завдання

Swipe to start coding

У цьому завданні ви порівняєте час виконання двох функцій TensorFlow, які виконують множення матриць: одна з декоратором @tf.function, а інша — без нього.

Кроки

  1. Визначте функцію matrix_multiply_optimized, переконавшись, що вона містить декоратор @tf.function.
  2. Завершіть обидві функції, обчисливши середнє значення отриманих матриць.
  3. Згенеруйте дві рівномірно розподілені випадкові матриці за допомогою функцій генерації випадкових матриць TensorFlow.

Рішення

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

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

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

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

single

some-alt