PyTorch: Освещая глубокое обучение

Оглавление⌄
Предисловие....20 Введение....22 Благодарности....24 Об этой книге....26 Для кого предназначена эта книга....26 Структура издания....27 О коде....29 Прочие источники информации в интернете....31 От издательства....32 Об авторах....33 Об иллюстрации на обложке....34 Часть I. Основы PyTorch....35 Глава 1. Знакомство с глубоким обучением и библиотекой PyTorch....36 1.1. Революция глубокого обучения....37 1.2. Использование PyTorch для глубокого обучения....39 1.3. Почему PyTorch?....41 1.3.1. Общая картина сферы глубокого обучения....42 1.4. Обзор средств поддержки библиотекой PyTorch проектов глубокого обучения....44 1.5. Аппаратные и программные требования....48 1.5.1. Блокноты Jupyter....49 1.6. Упражнения....50 1.7. Резюме....51 Глава 2. Предобученные сети....52 2.1. Предобученные сети для распознавания тематики изображения....53 2.1.1. Получение предобученной сети для распознавания изображений....56 2.1.2. AlexNet....57 2.1.3. ResNet....59 2.1.4. На старт, внимание, почти что марш....59 2.1.5. Марш!....62 2.2. Предобученная модель, создающая все лучшие подделки....64 2.2.1. Игра GAN....65 2.2.2. CycleGAN....67 2.2.3. Сеть, превращающая лошадей в зебр....68 2.3. Предобученная сеть для описания обстановки....72 2.3.1. NeuralTalk2....73 2.4. Torch Hub....74 2.5. Итоги главы....76 2.6. Упражнения....76 2.7. Резюме....77 Глава 3. В начале был тензор.......78 3.1. Мир как числа с плавающей запятой....79 3.2. Тензоры: многомерные массивы....81 3.2.1. От списков Python к тензорам PyTorch....81 3.2.2. Создаем наши первые тензоры....82 3.2.3. Что такое тензоры....83 3.3. Доступ к тензорам по индексам....86 3.4. Поименованные тензоры....86 3.5. Типы элементов тензоров....90 3.5.1. Задание числового типа с помощью dtype....91 3.5.2. dtype на все случаи жизни....91 3.5.3. Работа с атрибутом dtype тензоров....92 3.6. API тензоров....93 3.7. Тензоры: хранение в памяти....95 3.7.1. Доступ к хранилищу по индексу....95 3.7.2. Модификация хранимых значений: операции с заменой на месте....97 3.8. Метаданные тензоров: размер, сдвиг и шаг....97 3.8.1. Представления хранилища другого тензора....97 3.8.2. Транспонирование без копирования....100 3.8.3. Транспонирование при более высокой размерности....101 3.8.4. Непрерывные тензоры....102 3.9. Перенос тензоров на GPU....104 3.9.1. Работа с атрибутом device тензоров....105 3.10. Совместимость с NumPy....106 3.11. Обобщенные тензоры — тоже тензоры....107 3.12. Сериализация тензоров....108 3.12.1. Сериализация в HDF5 с помощью h5py....109 3.13. Итоги главы....110 3.14. Упражнения....111 3.15. Резюме....111 Глава 4. Представление реальных данных с помощью тензоров....112 4.1. Работа с изображениями....113 4.1.1. Добавление цветовых каналов....114 4.1.2. Загрузка файла изображения....115 4.1.3. Изменение схемы расположения....115 4.1.4. Нормализация данных....117 4.2. Трехмерные изображения: объемные пространственные данные....118 4.2.1. Загрузка данных в специализированном формате....119 4.3. Представление табличных данных....120 4.3.1. Реальный набор данных....120 4.3.2. Загрузка тензора данных по вину....122 4.3.3. Представление оценок....124 4.3.4. Быстрое кодирование....125 4.3.5. Когда считать данные категориальными....127 4.3.6. Поиск пороговых значений....128 4.4. Временные ряды....131 4.4.1. Добавляем измерение времени....132 4.4.2. Компоновка данных по периоду времени....133 4.4.3. Готов для обучения....135 4.5. Представление текста....138 4.5.1. Преобразование текста в числа....139 4.5.2. One-hot кодирование символов....139 4.5.3. Унитарное кодирование целых слов....141 4.5.4. Вложения текста....144 4.5.5. Вложения текста как схема....146 4.6. Итоги главы....147 4.7. Упражнения....147 4.8. Резюме....148 Глава 5. «Внутренняя кухня» обучения....149 5.1. Всегда актуальный урок моделирования....150 5.2. Обучение — это просто оценка параметров....152 5.2.1. «Жаркая» задача....154 5.2.2. Сбор данных....154 5.2.3. Визуализация данных....154 5.2.4 Выбираем линейную модель для первой попытки....155 5.3. Наша цель — минимизация потерь....156 5.3.1. Возвращаемся от задачи к PyTorch....157 5.4. Вниз по градиенту....160 5.4.1. Снижение потерь....161 5.4.2. Выражаем аналитически....162 5.4.3 Подгонка модели в цикле....164 5.4.4. Нормализация входных сигналов....167 5.4.5. Визуализируем (снова)....170 5.5. Компонент autograd PyTorch: обратное распространение всего, что угодно....171 5.5.1. Автоматическое вычисление градиента....171 5.5.2. Оптимизаторы на выбор....175 5.5.3. Обучение, проверка и переобучение....180 5.5.4. Нюансы автоматического вычисления градиентов и его отключение....186 5.6. Итоги главы....189 5.7. Упражнение....189 5.8. Резюме....190 Глава 6. Аппроксимация данных с помощью нейронной сети....191 6.1. Искусственные нейроны....192 6.1.1. Формирование многослойной сети....194 6.1.2. Функция ошибки....195 6.1.3. Все, что нам нужно — это функция активации....195 6.1.4. Другие функции активации....198 6.1.5. Выбор наилучшей функции активации....199 6.1.6. Что обучение дает нейронной сети....200 6.2. Модуль nn PyTorch....203 6.2.1. Использование метода __call__ вместо метода forward....204 6.2.2. Обратно к линейной модели....205 6.3. Наконец-то нейронная сеть....210 6.3.1. Замена линейной модели....210 6.3.2. Просматриваем информацию о параметрах....212 6.3.3. Сравнение с линейной моделью....214 6.4. Итоги главы....215 6.5. Упражнения....215 6.6. Резюме....216 Глава 7. Различаем птиц и самолеты: обучение на изображениях....217 7.1. Набор крошечных изображений....218 7.1.1. Скачиваем CIFAR-10....218 7.1.2. Класс Dataset....219 7.1.3. Преобразования объектов Dataset....221 7.1.4. Нормализация данных....223 7.2. Различаем птиц и самолеты....226 7.2.1. Формирование набора данных....227 7.2.2. Полносвязная модель....227 7.2.3. Выходной сигнал классификатора....229 7.2.4. Представление выходного сигнала в качестве вероятностей....230 7.2.5. Функция потерь для классификации....234 7.2.6. Обучение классификатора....237 7.2.7. Ограничения, накладываемые полносвязностью....244 7.3. Итоги главы....246 7.4. Упражнения....247 7.5. Резюме....248 Глава 8. Обобщение с помощью сверток....249 8.1. Аргументы в пользу сверток....250 8.1.1. Что делают свертки....250 8.2. Свертки в действии....253 8.2.1. Дополнение нулями по краям....255 8.2.2. Обнаружение признаков с помощью сверток....257 8.2.3. Расширяем кругозор с помощью субдискретизации и повышения глубины сети....260 8.2.4. Собираем нашу нейронную сеть воедино....264 8.3. Создание подклассов nn.Module....266 8.3.1. Наша сеть как подкласс nn.Module....267 8.3.2. Как PyTorch отслеживает параметры и подмодули....269 8.3.3. Функциональные API....270 8.4. Обучаем нашу сверточную сеть....272 8.4.1. Измерение степени безошибочности....274 8.4.2. Сохранение и загрузка модели....275 8.4.3. Обучение на GPU....275 8.5. Архитектура модели....277 8.5.1. Расширение объема памяти: ширина....278 8.5.2. Улучшаем сходимость модели и ее способности к обобщению: регуляризация....280 8.5.3. Забираемся глубже для усвоения более сложных структур: глубина сети....285 8.5.4. Сравнение архитектур этого раздела....291 8.5.5. Описанное здесь уже устарело....292 8.6. Итоги главы....292 8.7. Упражнения....293 8.8. Резюме....294 Часть II. Обучение на изображениях на практике: раннее обнаружение рака легких....295 Глава 9. Применение PyTorch в борьбе с раком....296 9.1. Постановка задачи....296 9.2. Подготовка к масштабному проекту....298 9.3. Что такое компьютерная томография....300 9.4. Проект: сквозной детектор рака легких....303 9.4.1. Почему нельзя просто передавать данные в нейронную сеть, пока она не заработает....308 9.4.2. Что такое узелок....313 9.4.3. Наш источник данных: The LUNA Grand Challenge....315 9.4.4. Загрузка данных LUNA....315 9.5. Итоги главы....317 9.6. Резюме....317 Глава 10. Объединение источников данных....319 10.1. Файлы необработанных данных КТ....321 10.2. Парсинг данных аннотаций LUNA....322 10.2.1. Обучающие и проверочные наборы....324 10.2.2. Объединение аннотаций и данных кандидатов....324 10.3. Загрузка сканов КТ....327 10.3.1. Единицы Хаунсфилда....330 10.4. Определение положения узелка в системе координат пациента....331 10.4.1. Система координат пациента....332 10.4.2. Форма КТ-скана и размеры вокселя....334 10.4.3. Преобразование миллиметров в адреса вокселей....336 10.4.4. Извлечение узелка из скана КТ....337 10.5. Простая реализация dataset....339 10.5.1. Кэширование массивов-кандидатов с помощью функции getCtRawCandidate....342 10.5.2. Построение набора данных в LunaDataset.__init__....343 10.5.3. Разделение данных на обучающие и проверочные....343 10.5.4. Отображение данных....345 10.6. Итоги главы....346 10.7. Упражнения....346 10.8. Резюме....347 Глава 11. Обучение модели классификации обнаружению потенциальных опухолей....348 11.1. Базовая модель и цикл обучения....348 11.2. Точка входа приложения....352 11.3. Предварительная настройка и инициализация....354 11.3.1. Инициализация модели и оптимизатора....355 11.3.2. Передача данных загрузчикам....356 11.4. Первый сквозной дизайн нейронной сети....359 11.4.1. Основы свертки....360 11.4.2. Полная модель....363 11.5. Обучение и проверка модели....366 11.5.1. Функция calculateBatchLoss....368 11.5.2. Цикл проверки работает аналогично....370 11.6. Вывод метрик производительности ....371 11.6.1. Функция logMetrics....372 11.7. Запуск обучения....375 11.7.1. Необходимые для обучения данные ....377 11.7.2. Интерлюдия: функция enumerateWithEstimate....378 11.8. Оценка модели: 99,7 % правильных ответов — это отличный результат, не так ли?....379 11.9. Построение графиков для метрик обучения с помощью TensorBoard....381 11.9.1. Запуск TensorBoard....381 11.9.2. Внедрение TensorBoard в функцию регистрации метрик....385 11.10. Почему модель не учится обнаруживать узелки?....387 11.11. Итоги главы....388 11.12. Упражнения....389 Резюме....389 Глава 12. Улучшение процесса обучения с помощью метрик и дополнений....391 12.1. План модернизации....392 12.2. Хорошие собаки против плохих парней: ложноположительные и ложноотрицательные результаты....393 12.3. Визуализация положительных и отрицательных результатов....395 12.3.1. Высокий отклик Рокси....398 12.3.2. Высокая точность Престона....400 12.3.3. Реализация точности и отклика в logMetrics....401 12.3.4. Готовая метрика производительности: метрика F1....402 12.3.5. Как модель работает с новыми метриками....407 12.4. Как выглядит идеальный набор данных....408 12.4.1. Как сделать данные более «идеальными»....411 12.4.2. Сравнение результатов обучения по сбалансированному и несбалансированному набору....417 12.4.3. Распознавание симптомов переобучения....419 12.5. Вернемся к проблеме переобучения....421 12.5.1. Модель прогнозирования с переобучением по возрасту....421 12.6. Предотвращение переобучения путем увеличения набора данных....422 12.6.1. Методы дополнения данных....423 12.6.2. Наблюдение за улучшением данных после дополнения....429 12.7. Итоги главы....431 12.8. Упражнения....432 Резюме....433 Глава 13. Поиск потенциальных узелков с помощью сегментации....435 13.1. Добавим в проект вторую модель....436 13.2. Различные типы сегментации....438 13.3. Семантическая сегментация: попиксельная классификация....439 13.3.1. Архитектура U-Net....443 13.4. Обновление модели сегментации....445 13.4.1. Адаптация готовой модели к нашему проекту....447 13.5. Модификация набора данных для сегментации....449 13.5.1. Особые требования U-Net к размеру входных данных....450 13.5.2. Компромиссы U-Net при работе с 3D- и 2D-данными....450 13.5.3. Формирование достоверных данных....452 13.5.4. Реализация Luna2dSegmentationDataset....459 13.5.5. Разработка наших данных для обучения и проверки....464 13.5.6. Реализация набора данных TrainingLuna2dSegmentation....465 13.5.7. Дополнение данных на ГП....466 13.6. Внедрение сегментации в сценарий обучения....469 13.6.1. Инициализация наших моделей сегментации и увеличения....470 13.6.2. Использование оптимизатора Adam....471 13.6.3. Потеря Дайса....471 13.6.4. Получение изображений в TensorBoard....475 13.6.5. Обновление логирования метрик....479 13.6.6. Сохранение модели....481 13.7. Результаты....482 13.8. Итоги главы....485 13.9. Упражнения....486 13.10. Резюме....487 Глава 14. Сквозной анализ узелков и дальнейшее развитие проекта....488 14.1. Финишная прямая....488 14.2. Независимость проверочного набора....492 14.3. Объединение сегментации КТ и классификации узелков-кандидатов....493 14.3.1. Сегментация....494 14.3.2. Группировка вокселей в узелки-кандидаты....495 14.3.3. Узелок или не узелок? Классификация и снижения числа ложноположительных результатов....497 14.4. Количественная оценка....502 14.5. Прогнозирование злокачественности....503 14.5.2. Базовый уровень для вычисления площади под кривой: классификация по диаметру....504 14.5.3. Повторное использование весов: тонкая настройка....508 14.5.4. Больше данных в TensorBoard....515 14.6. Каков диагноз?....518 14.6.1. Наборы для обучения, проверки и тестирования....520 14.7. Что дальше? Дополнительные источники вдохновения (и данных)....521 14.7.1. Борьба с переобучением: выбор лучшей регуляризация....522 14.7.2. Подготовка обучающих данных....525 14.7.3. Итоги конкурса и научные работы....527 14.8. Итоги главы....528 14.8.1. За кулисами....529 14.9. Упражнения....530 14.10. Резюме....531 Часть III. Развертывание....533 Глава 15. Развертывание в производстве....534 15.1. Поставка моделей PyTorch....535 15.1.1. Размещение модели на сервере Flask....536 15.1.2. Требования к развертывание....538 15.1.3. Пакетная обработка запросов....539 15.2. Экспорт модели....545 15.2.1. Совместимость за пределамиPyTorch с ONNX....546 15.2.2. Встроенный механизм экспорта PyTorch: отслеживание ....547 15.2.3. Сервер с отслеженной моделью....549 15.3. Взаимодействие с PyTorch JIT....549 15.3.1. Что за пределами Python/PyTorch....550 15.3.2. Двойственная природа PyTorch как интерфейса и бекэнда....552 15.3.3. TorchScript....552 15.3.4. Использование сценариев как лучшей замены отслеживанию....556 15.4. LibTorch: PyTorch в C++....557 15.4.1. Запуск JIT-моделей из C++....558 15.4.2. Сразу работаем с С++ и API С++....561 15.5. Добавим мобильности....565 15.5.1. Повышение эффективности: проектирование моделей и квантование....569 15.6. Новые технологии: корпоративная поставка моделей PyTorch....571 15.7. Итоги главы....571 15.8. Упражнение....572 15.9. Резюме....572
Описание
Ниже — практический обзор по теме «pytorch».
Легкая в освоении для тех, кто знаком с NumPy и scikit-learn, PyTorch упрощает работу с глубоким обучением, обладая в то же время богатым набором функций. Многие средства глубокого обучения используют Python, но именно библиотека PyTorch по-настоящему «питоническая». PyTorch прекрасно подходит для быстрого создания моделей и без проблем масштабируется до корпоративного проекта. Вы научитесь создавать нейронные сети и системы глубокого обучения с помощью PyTorch. PyTorch используют такие компании как Apple и JPMorgan Chase.Навыки работы с этой библиотекой пригодятся вам для карьерного роста. Книга поможет оперативно приступить к созданию реального проекта с нуля. В ней описаны лучшие практики всего конвейера работы с данными, включая PyTorch Tensor API, загрузку данных на Python, мониторинг обучения и визуализацию полученных результатов.
Если материал оказался полезен — сохраните страницу.
Поделиться
Частые вопросы
Можно ли скачать «PyTorch: Освещая глубокое обучение» бесплатно?
Да, «PyTorch: Освещая глубокое обучение» доступна для бесплатного скачивания на нашем сайте в формате PDF. Ссылка на файл находится на этой странице.
В каком формате и какого размера файл?
Книга предоставляется в формате PDF.
Кто автор и когда вышла книга?
автор — Антига Лука , Виман Томас , Стивенс Эли, издательство Питер, год выпуска 2022, 576 страниц.
О чём книга «PyTorch: Освещая глубокое обучение»?
Многие средства глубокого обучения используют Python, но именно библиотека PyTorch по-настоящему «питоническая».