PyTorch - PyTorch

PyTorch
Логотип PyTorch black.svg
Автор (ы) оригинала
Разработчики) Лаборатория исследований искусственного интеллекта Facebook (FAIR)
Первый выпуск Сентябрь 2016 г . ; 5 лет назад ( 2016-09 )
Стабильный выпуск
1.9.0  Отредактируйте это в Викиданных / 15 июня 2021 г . ; 3 месяца назад ( 15 июня 2021 г. )
Репозиторий github .com / pytorch / pytorch
Написано в
Операционная система
Платформа IA-32 , x86-64
Доступно в английский
Тип Библиотека для машинного обучения и глубокого обучения
Лицензия BSD
Веб-сайт pytorch .org

PyTorch - это библиотека машинного обучения с открытым исходным кодом, основанная на библиотеке Torch , используемая для таких приложений, как компьютерное зрение и обработка естественного языка , в основном разработанная лабораторией исследований искусственного интеллекта Facebook (FAIR). Это бесплатное программное обеспечение с открытым исходным кодом, выпущенное под модифицированной лицензией BSD . Хотя интерфейс Python более совершенен и является основным направлением разработки, PyTorch также имеет интерфейс C ++ .

На основе PyTorch построен ряд программ для глубокого обучения , в том числе Tesla Autopilot , Uber 's Pyro, Hugging Face 's Transformers, PyTorch Lightning и Catalyst.

PyTorch предоставляет две высокоуровневые функции:

История

Facebook использует как PyTorch, так и сверточную архитектуру для быстрого встраивания функций ( Caffe2 ), но модели, определенные этими двумя фреймворками, были взаимно несовместимы. Проект Open Neural Network Exchange ( ONNX ) был создан Facebook и Microsoft в сентябре 2017 года для преобразования моделей между фреймворками. Caffe2 был объединен с PyTorch в конце марта 2018 года.

Тензоры PyTorch

PyTorch определяет класс под названием Tensor ( torch.Tensor) для хранения и работы с однородными многомерными прямоугольными массивами чисел. PyTorch тензоры подобны NumPy Массивы, но может также устанавливаться на CUDA сигнала управления на Nvidia GPU. PyTorch поддерживает различные подтипы тензоров.

Модули

Модуль автоград

PyTorch использует метод, называемый автоматическим дифференцированием . Регистратор записывает, какие операции были выполнены, а затем воспроизводит их в обратном порядке для вычисления градиентов. Этот метод особенно эффективен при построении нейронных сетей для экономии времени в одну эпоху за счет вычисления дифференцирования параметров на прямом проходе.

Optim модуль

torch.optim- это модуль, реализующий различные алгоритмы оптимизации, используемые для построения нейронных сетей. Большинство часто используемых методов уже поддерживаются, поэтому нет необходимости создавать их с нуля.

nn модуль

PyTorch autograd позволяет легко определять вычислительные графы и принимать градиенты, но исходный autograd может быть слишком низкоуровневым для определения сложных нейронных сетей. Здесь nnможет помочь модуль.

Пример

Следующая программа демонстрирует функциональность библиотеки на простом примере.

import torch
dtype = torch.float
device = torch.device("cpu") # This executes all calculations on the CPU
# device = torch.device("cuda:0") # This executes all calculations on the GPU

# Creation of a tensor and filling of a tensor with random numbers
a = torch.randn(2, 3, device=device, dtype=dtype)
print(a) # Output of tensor A
# Output: tensor([[-1.1884,  0.8498, -1.7129],
#                  [-0.8816,  0.1944,  0.5847]])

# Creation of a tensor and filling of a tensor with random numbers
b = torch.randn(2, 3, device=device, dtype=dtype)
print(b) # Output of tensor B
# Output: tensor([[ 0.7178, -0.8453, -1.3403],
#                  [ 1.3262,  1.1512, -1.7070]])

print(a*b) # Output of a multiplication of the two tensors
# Output: tensor([[-0.8530, -0.7183,  2.58],
#                  [-1.1692,  0.2238, -0.9981]])

print(a.sum()) # Output of the sum of all elements in tensor A
# Output: tensor(-2.1540)

print(a[1,2]) # Output of the element in the third column of the second row
# Output: tensor(0.5847)

print(a.min()) # Output of the minimum value in tensor A
# Output: tensor(-1.7129)

Смотрите также

использованная литература

внешние ссылки