Знакомимся с PyTorch - инструментом для создания нейронных сетей |
||
|
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ Атаки на ИИ Внедрение ИИИИ теория Компьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Промпты. Генеративные запросы Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2025-07-24 15:24
Этот материал относится к циклу статей о нейронных сетях В предыдущих статьях мы с вами узнали о принципах работы полносвязных, сверточных и генеративно-состязательных нейронных сетей, методах их обучения и областях применения. В этой статье мы погрузимся глубже в устройство нейронных сетей и начнем знакомиться с тем, как их пишут на практике. Но для начала мы научимся работать с базовыми функциями фреймворка PyTorch, а также освоим среду Google Colab. С этой среды и начнем. Google Colab
Для начала разберемся с новыми понятиям.
Итак, Google Colab – это довольно удобная среда исполнения IPython кода. Можно запускать IPython-код у себя на компьютере с помощью Jupiter Notebook, но часто бывает так, что вычислительных мощностей обычного компьютера недостаточно для нужд машинного обучения. Тут-то к нам на помощь и приходит Google Colab. Google предоставляет свои вычислительные мощности, которые немного больше мощностей обычного компьютера. Кроме того, использование колаба обосновано рядом преимуществ. Вот некоторые из них:
Тем не менее, если вам будет удобнее работать в Jupiter Notebook или любой другой среде исполнения IPython кода – вы можете скачать готовый ноутбук (напомню, что так называют .ipynb файлы) и запускать его локально. Перейдем к непосредственной работе в колабе:
Отметим основные особенности и отличия IPython от обычного Python кода. 1. Это не новый язык, это новый способ его исполнения. Весь код – обычный Python код. 2. Весь код выполняется в ячейках. Чтобы создать ячейку, найдите кнопку + Code в верхней панели слева или по центру между двумя любыми ячейками. Кроме ячеек с кодом можно создавать ячейки с текстом. Для этого найдите кнопку + Text рядом с кнопкой + Code. Текстовые ячейки понимают Markdown-разметку и latex-код. ![]() Google Colab: Ячейки с текстом и кодом Google Colab: Ячейки с текстом и кодом 3. Чтобы выполнить код в конкретной ячейке, нажмите на кнопку Run Cell (черный треугольник на белом фоне) у соответствующей ячейки. Кроме этого, вы можете установить курсор в соответствующую ячейку и нажать Shift+Enter. ![]() Google Colab: Запуск ячейки Google Colab: Запуск ячейки 4. Несколько ячеек можно запускать разом. Но выполняться они будут последовательно. Сначала выполнится первая запущенная ячейка, после нее вторая, затем третья и так далее. ![]() Google Colab: Выполнение команды Linux Google Colab: Выполнение команды Linux В принципе, ничего сложного в этом нет. Вам нужно научиться делить свой код по ячейкам так, чтобы он не потерял читаемость. В любом случае, сейчас мы рассмотрим все вышесказанное на примере. Читайте также PyTorch
PyTorch – невероятно мощный фреймворк для работы с данными. Он включает в себя все инструменты для написания нейросетей, а также целый "зоопарк" предобученных моделей. Тензор – это объект линейной алгебры, линейно преобразующий одно пространство в другое. Частными случаями тензора являются скаляры (тензоры нулевого ранга), векторы (тензоры первого ранга), матрицы (тензоры третьего ранга) и т. д. Не переживайте, если вы плохо знакомы с линейной алгеброй. Ее знание конечно упростит вам понимание некоторых вещей, но не более. ![]() Google Colab: Копирование ноутбука на свой GDrive Google Colab: Копирование ноутбука на свой GDrive Итак, импортируем PyTorch: Python - Colab Cell Теперь почитаем документацию о тензорах. В колабе можно читать документацию функций, добавив знак ? перед самой функцией. Python - Colab Cell Результат: Google Colab Help ![]() Google Colab: Документация для torch.tensor() Google Colab: Документация для torch.tensor() Читайте также Создание тензора
Теперь рассмотрим, как создавать тензоры, и что можно с ними сделать. Тензоры можно создавать несколькими способами:
Python - Colab Cell Результат выполнения Индексация
Обращение по индексам к тензорам происходит так же, как и к обычным спискам в Python. Но все же разберем его на примере: Python - Colab Cell Результат выполнения PyTorch также поддерживает срезы тензоров. Но чтобы понять, как работают срезы, нужно узнать, что такое оси(axis). С их помощью вы можете брать любые срезы сколько-угодно-мерных тензоров. Давайте разберемся с ними. Оси и срезы тензоров
В общем случае ось – это номер измерения тензора. Например, у вектора всего одно измерение – поэтому у него всего одна ось, равная 0 (оси нумеруются с 0). У матрицы уже два измерения – у нее есть столбцы и строки. Так вот для матрицы ось 0 – это ось столбцов, а ось 1 – ось строк. Все станет понятнее с иллюстрацией: ![]() У вектора всего одна ось. У вектора всего одна ось. ![]() А у матрицы уже два измерения. Поэтому и оси две. А у матрицы уже два измерения. Поэтому и оси две. ![]() А вот тензор третьего ранга. Он большой и страшный, но не пугайтесь его. У него есть три измерения, поэтому и оси три. А вот тензор третьего ранга. Он большой и страшный, но не пугайтесь его. У него есть три измерения, поэтому и оси три. Кстати, если вы знакомы с numpy, то могли заметить оси в torch – то же самое, что и в numpy. Python - Colab Cell Результат выполнения Теперь попробуем поиграться со срезами. Посмотрим на срезы по нулевой оси: Python - Colab Cell Результат выполнения Теперь по первой: Python - Colab Cell Результат выполнения Затем по второй: Python - Colab Cell Результат выполнения А теперь посмотрим на срез сразу по нескольким осям: Python - Colab Cell Результат выполнения Основные метрики
Разобравшись с осями и срезами тензоров, перейдем к основным метрикам. У тензора можно посчитать сумму (всех элементов любого среза), найти среднее (арифметическое, геометрическое и другие также для всех элементов любого среза), вычислить стандартное отклонение и многое другое. Python - Colab Cell Результат выполнения Поэлементная сумма двух матриц нашего тензора: Python - Colab Cell Результат выполнения Сумма всех строк для каждой матрицы: Python - Colab Cell Результат выполнения Помимо sum() есть метод mean(). Он находит среднее (арифметическое) значение элементов тензора. Работает он схожим образом. Среднее значение всех элементов тензора: Python - Colab Cell Результат выполнения Среднее всех строк для каждой матрицы: Python - Colab Cell Результат выполнения В PyTorch есть еще множество подобных методов и функций, но все они работают по такому же принципу, поэтому мы останавливаться на них не будем. Если вас заинтересует та или иная функция – советую читать документацию. Там описана каждая функция с примерами использования. Модули
PyTorch полон различных модулей. В одной из предыдущих статей мы с вами разбирали, как учатся нейронные сети. Там было сказано о том, что после прямого прохождения данных через сеть считается ошибка. Напомню, что ошибка – это просто отличие ответов сети от правильных ответов. Самая простая функция ошибки – обычный модуль разности . Мы вычитаем из правильных ответов ответы сети, но чтобы всегда получать положительные значения, берем от этой разности модуль (т.е. ее абсолютное значение). В PyTorch есть множество различных функций ошибки. Они содержатся в модуле nn (сокращение от neural networks). Попробуем посчитать ошибку самостоятельно. Python - Colab Cell Зададим наши функции ошибки. Для примера мы рассмотрим среднеквадратичную (MSE (англ. Mean Squared Error) или L2) и абсолютную ошибки (MAE (англ. Mean Absolute Error) или L1). ![]() Абсолютная ошибка Абсолютная ошибка ![]() Среднеквадратичная ошибка Среднеквадратичная ошибка Здесь y – верный ответ, y с шапкой – ответ модели. Стоит отметить, что что из чего вычитать – не важно в обоих случаях, потому что в первом случае мы берём абсолютное значение, а во втором – возводим результат в квадрат. Python - Colab Cell Создадим тензоры, на которых будем считать ошибку и сразу преобразуем их к типу float(): Python - Colab Cell Результат выполнения Наконец, посчитаем наши ошибки: Python - Colab Cell Результат выполнения Заключение
Сегодня мы познакомились с одним из ведущих фреймворков в среде машинного обучения PyTorch, а также научились работать в Google Colab. Конечно одна статья не охватит всего объема функций фреймворка, который изучают месяцами. Если та или иная функция вам непонятна – ищите ее в документации, выше мы рассматривали, как ей пользоваться. На первый взгляд полученные знания могут показаться неприменимыми, но только на первый взгляд. Все это нужно для того, чтобы уже в следующей статье написать свою первую полносвязную нейронную сеть, которая будет классифицировать рукописные цифры! Источник: smartiqa.ru Комментарии: |
|