stringtranslate.com

PyTorch

PyTorch — это среда машинного обучения , основанная на библиотеке Torch , [4] [5] [6] используемая для таких приложений, как компьютерное зрение и обработка естественного языка , [7] первоначально разработанная Meta AI и теперь являющаяся частью Linux Foundation . [8] [9] [10] [11] Она признана одной из двух самых популярных библиотек машинного обучения наряду с TensorFlow , предлагая бесплатное программное обеспечение с открытым исходным кодом, выпущенное под модифицированной лицензией BSD . Хотя интерфейс Python более совершенен и является основным направлением разработки, PyTorch также имеет интерфейс C++ . [12]

На базе PyTorch создан ряд программ глубокого обучения , в том числе Tesla Autopilot , [13] Uber ’s Pyro, [14] Hugging Face’s Transformers, [15] PyTorch Lightning , [16] [17] и Catalyst. [18] [19]

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

История

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

PyTorch 2.0 был выпущен 15 марта 2023 года. [23]

Тензоры PyTorch

PyTorch определяет класс Tensor ( torch.Tensor) для хранения однородных многомерных прямоугольных массивов чисел и работы с ними. Тензоры PyTorch похожи на массивы NumPy , но также могут работать на графическом процессоре NVIDIA с поддержкой CUDA . PyTorch также разрабатывает поддержку других платформ графических процессоров, например AMD ROCm и Apple Metal Framework. [24]

PyTorch поддерживает различные подтипы тензоров. [25]

Отличия от физических «тензоров»

Тензор в физике похож на тензор PyTorch тем, что по большей части представляет собой многомерный массив . Единственная дополнительная функция тензора физика, отсутствующая в тензоре PyTorch, заключается в том, что при индексировании его записей некоторые индексы записываются с нижним или верхним индексом, например . Количество верхних и нижних индексов в физическом тензоре называется типом тензора. Должно быть легко понять, что тип вышеупомянутого тензора — (2,3). Верхний индекс называется контравариантным индексом, а нижний индекс называется ковариантным индексом . Тензор физики поддерживает четыре фундаментальные операции:

  1. Добавление
  2. Тензорное произведение
  3. Сокращение
  4. Изменение основы

Из них различие ко/контравариантности влияет только на операцию изменения базиса. На остальные три операции ко/контравариантность не влияет, и поэтому их легко реализовать для тензоров PyTorch. Таким образом, вопрос о том, заслуживает ли «тензор» PyTorch называться тензором, является вопросом мнения.

Тензор математика также немного отличается от тензора физика, но разница настолько незначительна, что не влияет на приложения. Для полноты картины для математика тензор типа (m,n) в векторном пространстве является элементом векторного пространства . Тогда первые три из четырех операций, описанных выше, можно выразить независимо от базиса, что делает четвертую операцию ненужной. Тензор физика затем получается в результате выбора основы для , что превращает тензор математика в многомерный массив. Поскольку выбор базиса для был произвольным , нам нужна операция смены базиса, чтобы устранить этот произвол, что в итоге и есть наша операция 4.

Нейронные сети PyTorch

PyTorch определяет класс nn ( torch.nn) для описания нейронных сетей и поддержки обучения. Этот модуль предлагает обширную коллекцию строительных блоков для нейронных сетей, включая различные уровни и функции активации, позволяющие создавать сложные модели.

Пример

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

импортный  фонарьdtype  =  факел . плаватьустройство  =  факел . устройство ( "cpu" )  # Выполняет все вычисления на процессоре# устройство = torch.device("cuda:0") # Это выполняет все вычисления на графическом процессоре# Создание тензора и заполнение тензора случайными числамиа  =  факел . randn ( 2 ,  3 ,  устройство = устройство ,  dtype = dtype )print ( a )  # Выход тензора A# Вывод: tensor([[-1.1884, 0.8498, -1.7129],# [-0.8816, 0.1944, 0.5847]])# Создание тензора и заполнение тензора случайными числамиб  =  факел . randn ( 2 ,  3 ,  устройство = устройство ,  dtype = dtype )print ( b )  # Вывод тензора B# Вывод: tensor([[ 0.7178, -0.8453, -1.3403],# [ 1.3262, 1.1512, -1.7070]])print ( a * b )  # Вывод умножения двух тензоров# Вывод: tensor([[-0.8530, -0.7183, 2.58],# [-1.1692, 0.2238, -0.9981]])print ( a . sum ())  # Вывод суммы всех элементов тензора A# Выход: тензор (-2,1540)print ( a [ 1 , 2 ])  # Вывод элемента в третьем столбце второй строки (отсчет от нуля)# Выход: тензор (0,5847)print ( a . max ())  # Вывод максимального значения в тензоре A# Вывод: тензор (0,8498)

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

импортный  фонарьfrom  torch  import  nn  # Импортируем подмодуль nn из PyTorchclass  NeuralNetwork ( nn . Module ):  # Нейронные сети определяются как классы def  __init__ ( self ):  # Слои и переменные определяются в методе __init__ супер ( NeuralNetwork ,  сам ) . __init__ ()  # Должен быть в каждой сети. себя . сгладить  =  nn . Flatten ()  # Определение слоя сглаживания. себя . линейный_relu_stack  =  nn . Последовательный (  # Определение стека слоев. пп . Linear ( 28 * 28 ,  512 ),  # Линейные слои имеют входную и выходную форму. пп . ReLU (),  #ReLU — одна из многих функций активации, предоставляемых nn пп . Линейный ( 512 ,  512 ), пп . РеЛУ (), пп . Линейный ( 512 ,  10 ),  ) def  вперед ( self ,  x ):  # Эта функция определяет проход вперед. х  =  сам . сгладить ( х ) логитс  =  сам . линейный_relu_stack ( х ) вернуть  логиты

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

Рекомендации

  1. Чинтала, Сумит (1 сентября 2016 г.). «Выпуск PyTorch Alpha-1».
  2. ^ «Выпуск 2.2.0» . 30 января 2024 г. Проверено 20 февраля 2024 г.
  3. Клэберн, Томас (12 сентября 2022 г.). «PyTorch зажигается благодаря Linux Foundation». Регистр .
  4. Егулалп, Сердар (19 января 2017 г.). «Facebook переносит машинное обучение на базе графического процессора в Python». Инфомир . Проверено 11 декабря 2017 г.
  5. Лорика, Бен (3 августа 2017 г.). «Почему исследователи искусственного интеллекта и машинного обучения начинают использовать PyTorch». О'Рейли Медиа . Проверено 11 декабря 2017 г.
  6. ^ Кеткар, Нихил (2017). «Введение в PyTorch». Глубокое обучение с помощью Python . Апресс, Беркли, Калифорния. стр. 195–208. дои : 10.1007/978-1-4842-2766-4_12. ISBN 9781484227657.
  7. ^ «Обработка естественного языка (NLP) с PyTorch - NLP с документацией PyTorch» . dl4nlp.info . Проверено 18 декабря 2017 г.
  8. ^ Патель, Мо (07 декабря 2017 г.). «Когда сливаются две тенденции: PyTorch и рекомендательные системы». О'Рейли Медиа . Проверено 18 декабря 2017 г.
  9. ^ Маннес, Джон. «Facebook и Microsoft сотрудничают, чтобы упростить преобразование PyTorch в Caffe2». ТехКранч . Проверено 18 декабря 2017 г. FAIR привыкла работать с PyTorch — средой глубокого обучения, оптимизированной для достижения самых современных результатов в исследованиях, независимо от ограничений ресурсов. К сожалению, в реальном мире большинство из нас ограничены вычислительными возможностями наших смартфонов и компьютеров.
  10. ^ Аракелян, София (29 ноября 2017 г.). «Технологические гиганты используют платформы с открытым исходным кодом, чтобы доминировать в сообществе ИИ». ВенчурБит . Проверено 18 декабря 2017 г.
  11. ^ «PyTorch укрепляет свое управление, присоединившись к Linux Foundation» . pytorch.org . Проверено 13 сентября 2022 г.
  12. ^ «Фронтенд C++». Основная документация PyTorch . Проверено 29 июля 2019 г.
  13. ^ Карпаты, Андрей. «PyTorch в Tesla - Андрей Карпаты, Tesla».
  14. ^ «Pyro с открытым исходным кодом Uber AI Labs, язык глубокого вероятностного программирования» . Инженерный блог Uber . 03.11.2017 . Проверено 18 декабря 2017 г.
  15. ^ PYTORCH-ТРАНСФОРМАТОРЫ: реализации PyTorch популярных преобразователей НЛП, PyTorch Hub, 01 декабря 2019 г. , получено 1 декабря 2019 г.
  16. ^ PYTORCH-Lightning: облегченная оболочка PyTorch для исследователей машинного обучения. Масштабируйте свои модели. Пишите меньше шаблонного текста, Lightning-Team, 18 июня 2020 г. , получено 18 июня 2020 г.
  17. ^ «Инструменты экосистемы». pytorch.org . Проверено 18 июня 2020 г.
  18. ^ GitHub - команда катализатора/катализатор: ускоренное DL и RL, Catalyst-Team, 05 декабря 2019 г. , получено 5 декабря 2019 г.
  19. ^ «Инструменты экосистемы». pytorch.org . Проверено 4 апреля 2020 г.
  20. ^ "PyTorch - О" . pytorch.org . Архивировано из оригинала 15 июня 2018 г. Проверено 11 июня 2018 г.
  21. ^ «Caffe2 объединяется с PyTorch» . 2018-04-02.
  22. ^ Эдвардс, Бендж (12 сентября 2022 г.). «Meta выделяет PyTorch Foundation, чтобы сделать инфраструктуру искусственного интеллекта нейтральной в отношении поставщиков». Арс Техника .
  23. ^ «PyTorch 2.0 привносит новый взгляд в машинное обучение с открытым исходным кодом» . ВенчурБит . 15 марта 2023 г. Проверено 16 марта 2023 г.
  24. ^ «Представляем ускоренное обучение PyTorch на Mac» . pytorch.org . Проверено 4 июня 2022 г.
  25. ^ «Введение в PyTorch - простая, но мощная библиотека глубокого обучения» . www.analyticsvidhya.com . 22 февраля 2018 г. Проверено 11 июня 2018 г.

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