Google выпустила Tangent, новую Python-библиотеку для машинного обучения

Новый подход к автодифференцированию.

Tangent — новая открытая Python-библиотека для автоматического дифференцирования. Она принимает на вход Python-функцию f и создает новую Python-функцию, вычисляющую градиент f. Это упрощает и увеличивает наглядность градиентных вычислений.

В существующих библиотеках автоматическое дифференцирование выполняется либо во время выполнения программы (например, TF Eager, PyTorch и Autograd), либо путем построения динамического графа потоков данных, который затем дифференцируется (TensorFlow). Tangent же осуществляет дифференцирование в самом исходном коде Python, предоставляя на выходе новый Python-код. Полученная таким образом программа намного проще воспринимается и поддается отладке, что экономит время и делает разработку более гибкой.

По словам разработчиков, Tangent предоставляет больше инструментов для автодифференцирования, чем аналоги, и библиотека полностью совместима с TensorFlow и NumPy.

Как это работает?

Новая библиотека наравне с NumPy и TensorFlow предоставляет инструкции к генерации производных кода для каждой структуры языка Python.

Tangent API:

import tangent
df = tangent.grad(f)

Вот что происходит при вызове tangent.grad и передаче ей функции Python:

Вывести производные можно с помощью следующего кода:

import tangent
df = tangent.grad(f, verbose=1)

Дальнейшее развитие

Библиотека находится в открытом доступе. Разработчики предупреждают, что это еще не финальная версия, поэтому возможны ошибки.

Источник: блог Google Open Source