Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Виконання Графа | Основи TensorFlow
Quizzes & Challenges
Quizzes
Challenges
/
Вступ до 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.

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain more about how @tf.function improves performance?

What are some limitations or caveats of using @tf.function?

Can you show more examples of using decorators in TensorFlow?

close

Awesome!

Completion rate improved to 6.25

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

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

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

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

single

some-alt