Как изображение становится понятным нейросети
Представьте, что на экране появилась рукописная семёрка. Для человека это сразу цифра: мы узнаём наклонную черту и короткую перекладину, даже если почерк непривычный. Компьютер начинает с другого. Ему доступна таблица чисел — яркостей отдельных точек изображения, которые называют пикселями. Чтобы получить из этой таблицы ответ «семь», нужно выполнить последовательность вычислений. Нейросеть как раз задаёт такую последовательность, а во время обучения подбираются числа, от которых зависит её результат.
Эти подбираемые числа называют параметрами модели. К ним относятся веса и смещения, уже встречавшиеся нам в выражении X @ W + b. Веса определяют, как входные значения участвуют в вычислении, а смещения позволяют сдвигать результат. При работе с NumPy мы сами записывали вычисления и производные. По мере роста сети такой код становится труднее проверять: ошибка в одной производной может испортить всё обучение. PyTorch позволяет поручить библиотеке вычисление производных и обновление параметров, сохранив за нами выбор данных, устройства сети и способа оценки её ответа.
Начнём с того, в каком виде PyTorch хранит числа. Его основной объект — тензор. В этой главе можно понимать тензор как числовой массив: одно число, строку чисел, таблицу или массив с большим количеством осей. Само слово не означает, что перед нами что-то обязательно сложное. Таблица из двух строк и трёх столбцов — тоже тензор. Важно уметь читать её форму и понимать, что означает каждая ось.
Будем придерживаться удобного соглашения: в таблице данных одна строка соответствует одному объекту, а столбцы содержат его признаки. Признак — числовая характеристика объекта; для маленького изображения такими характеристиками могут быть яркости пикселей. В следующем примере у нас два объекта и по три признака у каждого. Посмотрим на форму таблицы, тип хранящихся чисел и один выбранный элемент.