Python для алготрейдинга - страница 22

 

Машинное обучение с помощью BigQuery на облачной платформе Google



Машинное обучение с помощью BigQuery на облачной платформе Google

В видео обсуждается содержание курса, посвященного использованию BigQuery для машинного обучения. BigQuery — это корпоративное хранилище данных, которое изначально использовалось внутри Google, а затем стало облачным сервисом. Это высоко масштабируемое и бессерверное решение, способное вмещать петабайты данных и обеспечивать быстрые результаты запросов. Инструкции курса основаны на реальных примерах из практики и помогают учащимся пройти через процесс создания моделей машинного обучения от поиска данных до создания моделей. На протяжении всего курса учащиеся используют BigQuery для создания своих моделей, требуя от них настройки учетной записи Google Cloud Platform (GCP), специфичной для BigQuery.

Видео объясняет руководящие принципы Google по масштабированию аппаратных ресурсов, подчеркивая решение масштабировать, а не увеличивать. Google понимает, что аппаратное обеспечение может выйти из строя в любой момент, поэтому дизайн должен учитывать потенциальные сбои. Кроме того, Google использует стандартное аппаратное обеспечение, доступное по цене и обеспечивающее гибкость поставщика. Горизонтальное масштабирование предпочтительнее масштабирования из-за высокой стоимости оборудования. Google разработал такие технологии, как GFS, MapReduce и Bigtable, которые привели к масштабируемой аппаратной архитектуре. Colossus заменил GFS и служит базовой распределенной подсистемой для технологий Google, включая BigQuery.

Лектор представляет обзор решения Google для баз данных Spanner, которое распространяется по всему миру и использует Colossus для управления распределенными транзакциями. Видео также демонстрирует процесс регистрации и управления платежными аккаунтами в Google Cloud Platform. Пользователи могут создать учетную запись GCP, посетив веб-сайт платформы, согласившись с условиями и предоставив необходимую информацию. Новым пользователям предоставляется кредит в размере 300 долларов США для использования в GCP, который можно отслеживать в разделе выставления счетов. Лектор советует настроить оповещения о бюджете, чтобы получать уведомления при достижении определенных целей по выставлению счетов.

Подробно обсуждаются создание и назначение BigQuery. Экспоненциальный рост данных Google потребовал разработки BigQuery, который позволяет выполнять интерактивные запросы к большим наборам данных. BigQuery может обрабатывать запросы независимо от того, включают ли они 50 строк или 50 миллиардов строк. Его нестандартный диалект SQL облегчает процесс обучения, и он может распараллелить выполнение SQL на тысячах машин. Хотя BigQuery хранит структурированные данные, он отличается от реляционных баз данных поддержкой вложенных типов записей в таблицах, что позволяет хранить вложенные структуры.

Объясняется архитектура BigQuery, подчеркивая ее подход к распараллеливанию. В отличие от большинства систем реляционных баз данных, которые выполняют один запрос на ядро, BigQuery предназначен для выполнения одного запроса на тысячах ядер, что значительно повышает производительность по сравнению с традиционными подходами. Механизм Dremel обеспечивает конвейеризацию запросов, позволяя другим запросам использовать доступные ядра, в то время как некоторые ожидают ввода-вывода. BigQuery использует подход с несколькими арендаторами, позволяющий нескольким клиентам одновременно выполнять запросы на одном и том же оборудовании, не затрагивая другие местоположения. Интерфейс BigQuery состоит из трех основных панелей, включая историю запросов, сохраненные запросы, историю заданий и разделы ресурсов для организации доступа к таблицам и представлениям.

Видео содержит подробное объяснение экранов и панелей в Google Cloud Console, характерных для BigQuery. В меню навигации отображаются ресурсы BigQuery, такие как наборы данных и таблицы, а раздел рабочей области SQL позволяет пользователям создавать запросы, работать с таблицами и просматривать историю своих заданий. На панели Explorer перечислены текущие проекты и их ресурсы, а панель Details предоставляет информацию о выбранных ресурсах и позволяет изменять схемы таблиц, экспорт данных и другие функции. Уточняется, что BigQuery не подходит для OLTP-приложений из-за отсутствия поддержки частых небольших обновлений на уровне строк. Хотя это и не база данных NoSQL, BigQuery использует диалект SQL и ближе к базе данных OLAP, предоставляя аналогичные преимущества и пригодность для многих вариантов использования OLAP.

Далее обсуждается определение Google BigQuery, подчеркивая его полностью управляемое, масштабируемое, экономичное и быстрое облако.

Вот дополнительные моменты, обсуждаемые в видео:

  1. Формат хранения BigQuery. BigQuery использует столбчатый формат хранения, оптимизированный для повышения производительности запросов. Он хранит данные в сжатом и столбцовом виде, что позволяет эффективно обрабатывать определенные столбцы в запросе без доступа к ненужным данным. Этот формат особенно удобен для аналитических рабочих нагрузок, включающих агрегирование и фильтрацию.

  2. Прием данных: BigQuery поддерживает различные методы приема данных. Он может напрямую загружать данные из таких источников, как Google Cloud Storage, Google Sheets и Google Cloud Bigtable. Он также предлагает интеграцию с другими инструментами обработки данных, такими как Dataflow и Dataprep, для операций ETL (извлечение, преобразование, загрузка).

  3. Разделение данных и кластеризация. Для оптимизации производительности запросов BigQuery предоставляет такие функции, как секционирование и кластеризация. Разделение предполагает разделение больших наборов данных на более мелкие управляемые части на основе выбранного столбца (например, даты). Кластеризация дополнительно организует данные в каждом разделе на основе одного или нескольких столбцов, чтобы повысить производительность запросов за счет уменьшения объема сканируемых данных.

  4. Управление доступом к данным и безопасность: BigQuery предлагает надежные средства управления доступом для управления безопасностью данных. Он интегрируется с Google Cloud Identity and Access Management (IAM), позволяя пользователям определять подробные разрешения на доступ на уровне проекта, набора данных и таблицы. BigQuery также поддерживает шифрование при хранении и передаче, обеспечивая защиту конфиденциальных данных.

  5. Ценообразование данных и оптимизация затрат. В видео кратко рассказывается о модели ценообразования BigQuery. Он работает на основе оплаты по мере использования, взимая плату с пользователей в зависимости от объема данных, обработанных запросами. BigQuery предлагает такие функции, как кэширование запросов, которые могут снизить затраты, избегая избыточной обработки данных. Для минимизации затрат важно оптимизировать запросы и избегать ненужного сканирования данных.

  6. Машинное обучение с помощью BigQuery: курс охватывает использование BigQuery для задач машинного обучения. BigQuery интегрируется со службами машинного обучения Google Cloud, такими как AutoML и TensorFlow, что позволяет пользователям использовать возможности BigQuery для подготовки данных и разработки функций перед обучением моделей машинного обучения.

  7. Варианты использования и примеры: лектор упоминает различные варианты использования BigQuery в реальной жизни, например, анализ больших объемов данных журналов, проведение маркетинговых исследований, выполнение сегментации клиентов и выполнение сложных аналитических запросов на массивных наборах данных.

В целом, видео представляет собой обзор возможностей, архитектуры и ключевых функций BigQuery, подчеркивая его пригодность для крупномасштабного анализа данных и задач машинного обучения. В нем подчеркиваются преимущества использования полностью управляемого и масштабируемого облачного решения, такого как BigQuery, для эффективной обработки огромных объемов данных.

  • 00:00:00 В видео обсуждается содержание курса, посвященное использованию BigQuery для машинного обучения. BigQuery — это масштабируемое бессерверное корпоративное хранилище данных, которое изначально использовалось внутри Google, а затем стало облачным сервисом. Он может вмещать петабайты данных и возвращает данные за считанные секунды, что делает его ценным ресурсом для контролируемого машинного обучения, особенно при работе с большими наборами данных. Обучение в этом курсе основано на реальных примерах, и учащиеся пройдут процесс создания своих моделей машинного обучения от поиска данных до их моделирования для создания модели с высокой степенью прогнозирования. На протяжении всего курса учащиеся будут использовать BigQuery для построения своих моделей, что означает настройку учетной записи GCP, которая будет характерна только для BigQuery.

  • 00:05:00 В видео объясняются основные принципы масштабирования аппаратных ресурсов в Google, в частности решение двигаться в сторону уменьшения, а не увеличения. Руководящие принципы Google, когда дело доходит до аппаратного обеспечения, заключаются в том, что все может выйти из строя в любое время, и дизайн должен это учитывать. Второй принцип связан с использованием общедоступного оборудования, доступного по цене и легкодоступного, что позволяет Google менять поставщиков без каких-либо штрафов. Наконец, аппаратное обеспечение стоит дорого, поэтому цель состоит в том, чтобы масштабировать его, а не увеличивать. Компания Google разработала ключевые технологии, такие как GFS, MapReduce и Bigtable, чтобы перевести их на масштабируемую аппаратную архитектуру. Кроме того, Colossus заменил GFS и является базовой распределенной подсистемой, на которой построена большая часть технологий Google, включая BigQuery, который опирается на Colossus.

  • 00:10:00 Лектор представляет обзор решения Google для базы данных Spanner, которое распространяется по всему миру и использует Colossus для управления распределенными транзакциями, а также демонстрирует, как зарегистрироваться и управлять учетными записями для выставления счетов в Google Cloud Platform. Чтобы начать использовать сервисы Google Cloud, пользователям необходимо создать учетную запись в GCP, что можно сделать, перейдя в браузер и введя «GCP» или «Google Cloud Platform». После согласия с условиями и предоставления соответствующей информации новым пользователям предоставляется кредит в размере 300 долларов США для использования в GCP, который можно отслеживать с помощью функций обзора и бюджета в разделе выставления счетов. Лектор рекомендует пользователям настраивать оповещения о бюджете, чтобы получать уведомления при достижении определенных целей по выставлению счетов, что можно сделать, нажав «создать бюджет» и указав общую сумму в долларах, которую нужно потратить, а также выбрав оповещения о проекте и бюджете. быть включенным.

  • 00:15:00 Обсуждается создание и назначение BigQuery. Экспоненциальный рост данных Google вызвал проблемы, что привело к разработке инструмента, позволяющего выполнять интерактивные запросы к большим наборам данных — BigQuery. Он предлагает возможность работать одинаково независимо от того, запрашиваются ли 50 строк или 50 миллиардов строк. Благодаря своему нестандартному диалекту, основанному на SQL, у него короткая кривая обучения, встроенная возможность распараллелить выполнение SQL на тысячах машин. Структурированные данные — это то, что может хранить BigQuery, но, в отличие от реляционной базы данных, эти поля могут содержать типы записей, включая вложенные записи в таблицах. Эти вложенные структуры по существу представляют собой предварительно объединенные таблицы.

  • 00:20:00 Видео объясняет архитектуру BigQuery и ее подход к распараллеливанию. В то время как большинство систем реляционных баз данных могут выполнять только один запрос на ядро, BigQuery спроектирован так, чтобы выполнять один запрос на тысячах ядер, что значительно повышает производительность по сравнению с традиционными подходами к ядрам запросов. Это возможно благодаря механизму Dremel, который может конвейеризировать запросы, позволяя другим запросам использовать доступные ядра, в то время как некоторые ожидают ввода-вывода. Этот многопользовательский подход означает, что многие клиенты могут одновременно выполнять запросы на одном и том же оборудовании, а BigQuery использует различные модели использования данных, поэтому интенсивное использование в одном географическом местоположении не влияет на другие местоположения. В видео также рассказывается о трех основных панелях интерфейса BigQuery с историей запросов, специфичной для каждого проекта, и сохраняются запросы, история заданий и разделы ресурсов, доступные для организации доступа к таблицам и представлениям.

  • 00:25:00 Спикер объясняет различные экраны и панели, из которых состоит Google Cloud Console, специфичная для BigQuery. В меню навигации отображаются ресурсы BigQuery, такие как наборы данных и таблицы, а раздел рабочей области SQL позволяет пользователям создавать запросы, работать с таблицами и просматривать историю своих заданий. Панель Explorer отображает список текущих проектов и их ресурсов, а панель Details предоставляет информацию о выбранном ресурсе и позволяет пользователям изменять схемы таблиц, экспортировать данные и выполнять другие функции. Докладчик также обсуждает, чем BigQuery не является, объясняя, что он плохо подходит для OLTP-приложений из-за отсутствия поддержки частых небольших обновлений на уровне строк и что это не база данных NoSQL, поскольку она использует диалект SQL. . Вместо этого BigQuery ближе к базе данных OLAP и предоставляет многие из тех же преимуществ, что делает его подходящим для многих вариантов использования OLAP.

  • 00:30:00 Обсуждалось определение Google BigQuery. Это полностью управляемое, масштабируемое, экономичное и быстрое облачное хранилище данных для аналитики со встроенным машинным обучением. Кроме того, BigQuery состоит из многих других компонентов, таких как Megastore и Colossus. У BigQuery есть свой алгоритм хранения данных, Column IO, который хранит данные в столбцах, повышая производительность и взимая плату с пользователей на основе возвращенных данных. Сеть Google работает быстро благодаря их высокому вниманию к деталям; поэтому большая часть их сетевой архитектуры остается загадкой. Наконец, BigQuery выпустила поддержку стандартного SQL с запуском BigQuery 2.0, переименовав BigQuery SQL в Legacy SQL и предпочитая диалект SQL для запросов и данных, хранящихся в BigQuery.

  • 00:35:00 В видео рассказывается о процессе сохранения и открытия запросов в BigQuery, а также о создании и запросе представлений. Рассказчик объясняет, что представление — это виртуальная таблица, и демонстрирует, как создать и сохранить представление в новом наборе данных. В видео также обсуждаются различные параметры редактора запросов, такие как форматирование запроса и доступ к параметрам запроса. Кроме того, в видео рассказывается о бурном развитии карьеры в области машинного обучения и науки о данных, а также обсуждаются различия между такими ролями, как аналитик данных и специалист по данным. Наконец, рассказчик объясняет, что в центре внимания курса будет контролируемое машинное обучение с использованием Python, который считается золотым стандартом в этой области.

  • 00:40:00 Обсуждаются различные роли в области машинного обучения, включая специалиста по данным, инженера по машинному обучению и инженера по данным. Основное внимание уделяется прикладному машинному обучению, которое представляет собой реальное применение принципов машинного обучения для решения проблем, в отличие от чисто академических или исследовательских приложений. Также подчеркивается важность структурированных наборов данных, особенно тех, которые находятся в реляционных базах данных, поскольку было показано, что традиционные модели, такие как усилители градиента, превосходно моделируют высокоструктурированные наборы данных и выиграли множество соревнований по искусственным нейронным сетям.

  • 00:45:00 Рассмотрен процесс машинного обучения, который в значительной степени ориентирован на процесс. В статье объясняется, как инженеры по машинному обучению должны выполнять одни и те же основные шаги, когда им нужно решить проблему. Первым шагом является просмотр данных, а затем поиск данных. Поскольку большая часть прикладного машинного обучения контролируется, данные сначала должны быть очищены (или «обработаны»), что включает в себя преобразование данных в числовой формат. Это требует, чтобы инженер по машинному обучению тратил большую часть своего времени на обработку данных. После очистки данных начинается этап моделирования. На этом этапе должны быть разработаны модели или алгоритмы, которые изучают закономерности из очищенного набора данных. Цель машинного обучения — иметь возможность делать высокоточные прогнозы на основе свежих данных. После того, как модели настроены и протестированы на новых данных, они запускаются в производство для использования потребителями.

  • 00:50:00 В видео обсуждается процесс установки версии Python 3.7 с использованием дистрибутива Anaconda на Mac. Дистрибутив Anaconda доступен как для Windows, так и для Mac и имеет графический установщик. После загрузки установщика и ввода пароля рекомендуется тип установки по умолчанию, а процесс установки может занять пару минут. После завершения установки можно запустить Anaconda Navigator и открыть новый блокнот Python 3, чтобы начать кодирование.

  • 00:55:00 Преподаватель объясняет, как пользоваться IDE Jupyter Notebook, которая используется для машинного обучения с помощью BigQuery на облачной платформе Google. Первый шаг — найти ноутбук на ноутбуке, введя CMD и открыв командную строку Anaconda. Оттуда введите «Jupyter Notebook», чтобы загрузить движок Python на локальный компьютер. После загрузки объясняется навигация по блокноту, в том числе, как закрыть страницу

  • 01:00:00 Представлено пошаговое руководство по использованию Jupyter Notebook, начиная с перехода к «Новый блокнот» и выбора Python 3. В руководстве также показано, как импортировать библиотеки, создавать, выполнять и переименовывать ячейки, изменять порядок ячеек, автоматическое сохранение блокнота, вставка, копирование, вырезание, вставка, выполнение всего и перезапуск ядра, а также использование Markdown для аннотирования блокнота. Кроме того, подчеркивается простота ноутбука, которая считается достаточной для работы с конвейером машинного обучения.

  • 01:05:00 В видео рассказывается об основах работы с данными в BigQuery, включая наборы данных и таблицы. Это объясняет, насколько важно для инженеров по машинному обучению иметь возможность создавать, загружать и обрабатывать данные в BigQuery, поскольку масштабирование может быть серьезной проблемой при создании реальных моделей. С BigQuery ML требуется только знание SQL, что делает его простым и доступным для тех, кто хорошо разбирается в SQL, и дает опытным специалистам по машинному обучению возможность создавать свои модели в любом масштабе. Кроме того, в видео рассматриваются основные библиотеки машинного обучения, используемые в прикладном машинном обучении на python, такие как Pandas, библиотека для обработки и обработки данных, Numpy, фундаментальный пакет для научных вычислений с помощью python, Matplotlib для создания 2D-графиков, и Scikit-Learn — библиотека, используемая для построения традиционных моделей.

  • 01:10:00 В видеоруководстве рассматриваются основы обработки и обработки данных для машинного обучения с использованием двух основных библиотек: pandas и numpy. Библиотека pandas используется для загрузки известного игрушечного набора данных для машинного обучения, называемого набором данных Titanic, и создания псевдонима. Создается массив, позволяющий понять модель, и определяются необходимые атрибуты модели, такие как класс пассажиров, пол, возраст и выжившие. Целевая переменная, которая должна быть предсказана, представляет собой выживший атрибут, который равен либо 1, либо 0; выжил означает 1, а не выжил — 0. Следующий шаг — преобразование значений атрибутов в числа с использованием кода Python, который может быть понят машиной. Все наблюдения со значениями null или nand удаляются, а выживший атрибут удаляется с оси x, чтобы предотвратить мошенничество модели. Наконец, набор данных разделен на разделы тестирования и обучения с использованием библиотеки общего назначения для машинного обучения под названием scikit-learn.

  • 01:15:00 В видео обсуждается использование машинного обучения с колоссальным набором данных и то, как в реальных сценариях большинство моделей берутся из реляционных баз данных. Представлен интерфейс SQL Server Management Studio, так как он обычно используется для управления базами данных SQL Server. Представлен гипотетический сценарий, в котором задача состоит в создании набора данных, который можно использовать для прогнозирования будущих продаж. В видео рассказывается, как создать запрос и соединить таблицы, чтобы создать историю заказов для знаменитостей, и как сохранить эту информацию в виде представления, чтобы ее можно было легко запросить и экспортировать в виде файла CSV для совместного использования с остальными. команда.

  • 01:20:00 В видео показан процесс экспорта данных в CSV-файл из облачной базы данных с помощью SQL Server. Они объясняют, что исследовательский анализ данных, также известный как анализ данных, играет решающую роль в машинном обучении, и представляют библиотеки Matplotlib и Seaborn для визуализации данных. Далее в видео показаны примеры использования этих библиотек для изучения набора данных «Титаник», расчета процента отсутствующих значений и создания гистограмм и гистограмм. Они отмечают, что Seaborn часто предпочитают из-за его простоты.

  • 01:25:00 Докладчик исследует различные типы моделей машинного обучения и их приложения. Модели глубокого обучения, хотя и превосходно распознают изображения и речь, в большинстве случаев могут не подходить для контролируемого машинного обучения, основанного на высокоструктурированных наборах данных. Традиционные модели, такие как усилители градиента, более точны, менее требовательны к вычислениям, их легче объяснить и они могут ускорить задачи классификации и регрессии. Затем спикер знакомит аудиторию с процессом создания традиционной модели с использованием Python, Pandas для обработки данных и XGBoost, библиотеки повышения градиента, которая выиграла множество конкурсов по моделированию. Модель набрала 83 % в наборе данных, и спикер объясняет, как сохранить модель с помощью библиотеки Pickle.

  • 01:30:00 Видео объясняет, что такое классификация и как она разделяет наблюдения на группы на основе таких характеристик, как оценки, результаты тестов и опыт. Он также охватывает бинарную классификацию и то, как она включает в себя классификацию данных на две группы с выходом «да» или «нет». Затем в видео представлены искусственные нейронные сети и модели глубокого обучения, в которых линейная регрессия определяется как предсказание значения на основе линии и объясняется, как она используется в прогнозировании для прогнозирования случайных точек данных, таких как диагнозы рака или цены на акции. Демонстрация линейной регрессии в Python использует библиотеку pandas для обработки данных, в то время как библиотека numpy хранит данные в контейнере оптимизированного массива, а библиотека matplotlib используется для визуализации данных. Видео показывает, как построить график, чтобы найти положительную линейную зависимость между часами обучения и полученными баллами, и в конечном итоге импортирует модель классификатора, используемую для линейной регрессии в сценарии Python.

  • 01:35:00 Докладчик рассказывает об основах классификации как техники контролируемого машинного обучения и дает упрощенное определение, которое разделяет наблюдения на группы на основе их характеристик. Приведенный пример — обнаружение спама, когда электронные письма делятся на две категории: спам и не спам. Более сложным примером является проект машинного обучения «Титаник», который представляет собой проблему бинарной классификации, где выход модели — либо единица для выживших, либо ноль для не выживших. В следующей части раздела рассказывается, как построить модель классификации с высокой точностью, включая импорт библиотек, использование набора данных iris, преобразование текстовых значений в числа с использованием кодирования меток, обучение модели классификатора случайного леса и тестирование готовой модели на соответствие тренировочные данные для достижения точности 97%.

  • 01:40:00 Обсуждаются основы работы с данными с помощью BigQuery, включая наборы данных и таблицы. Для инженера по машинному обучению очень важно уметь создавать, загружать и обрабатывать данные в BigQuery. В этом разделе рассказывается об обработке данных в BigQuery, в том числе о том, как он может обрабатывать петабайты данных, и о преимуществах использования облачного блокнота Google Jupyter под названием Cloud Datalab. Также рассматривается BigQuery ML, который не требует никаких знаний в области программирования, кроме SQL, что облегчает специалистам по данным создание моделей машинного обучения. Наконец, в этом разделе рассматриваются нюансы наборов данных и таблиц, в том числе способы создания набора данных и добавления к нему таблиц в BigQuery.

  • 01:45:00 Спикер рассказывает о различных вариантах источника при создании таблиц в BigQuery, включая пустую таблицу, внешние источники данных и загрузку данных из читаемого источника, такого как CSV, JSON, Arvo, Parquet и ORC. В то время как большинство инженеров по машинному обучению предпочитают использовать файлы CSV, Arvo быстрее загружается и проще анализируется без проблем с кодировкой, в то время как Parquet и ORC широко используются в экосистеме Apache Hadoop. Затем докладчик представляет Google Cloud Data Lab, которая представляет собой виртуальную машину (ВМ), размещенную на GCP, которая содержит интерфейс, похожий на Jupyter Notebook, под названием Datalab. Пользователи могут взять код из Jupyter Notebook локально и использовать его в GCP, а при создании нового экземпляра Datalab пользователи выбирают регион хранения, и им может быть предложено создать ключ SSH.

  • 01:50:00 Преподаватель демонстрирует, как создать подключение к BigQuery и импортировать спорный титанический набор данных в экземпляр облачной лаборатории данных. Импортируя BigQuery и создавая к нему подключение, пользователи могут писать код SQL для запроса данных. С помощью предварительно упакованных библиотек, таких как pandas, классификатор дерева решений и разделение тестов обучения, пользователи могут сегментировать свои данные, сопоставлять их со своими обучающими данными и оценивать свою модель. Кроме того, пользователи могут вносить изменения в свой запрос непосредственно внутри ячейки и выполнять его для создания нового фрейма данных pandas, в котором хранится набор данных из запроса. Наконец, инструктор показывает, как загрузить и запросить другой набор данных, набор данных iris, в экземпляре облачной лаборатории данных с помощью BigQuery.

  • 01:55:00 Ведущий демонстрирует, как импортировать данные из библиотеки BigQuery в блокнот Jupyter на облачной платформе Google. Набор данных радужной оболочки импортируется и разделяется на наборы для обучения и тестирования, а для обучения используется классификатор случайного леса. Прогнозируемые значения выводятся для модели. Докладчик также показывает, как обновить ресурсы экземпляра лаборатории облачных данных, открыв его на главной странице Google и нажав «Изменить».

  • 02:00:00 Докладчик рассказывает о BigQuery ML, инструменте, который позволяет специалистам по SQL создавать крупномасштабные модели машинного обучения с использованием существующих навыков и инструментов SQL, тем самым демократизируя машинное обучение. В настоящее время BigQuery ML поддерживает три типа моделей: линейную регрессию, бинарную логистическую регрессию и многоклассовую логистическую регрессию. Спикер также объясняет, как создать модель бинарной логистической регрессии в BigQuery с использованием языка SQL. Создание модели включает определение модели, указание параметров и передачу целевой переменной с помощью операторов SQL. Модель можно оценить, а показатели точности также можно представить с помощью SQL. Наконец, спикер объясняет фазу прогнозирования, когда модели передаются свежие данные, которые она никогда раньше не видела.

  • 02:05:00 Спикер рассказывает, как использовать BigQuery ML для построения модели бинарной классификации и ее оценки. Данные загружаются из CSV-файла в BigQuery, а модели передаются все столбцы, кроме целевой переменной. После завершения оценки модель сделает прогноз для каждого члена семьи, при этом первый столбец выходных данных прогнозирует выживание (один для выживших и ноль для не выживших). Затем докладчик переходит к установке инструмента командной строки под названием gsutil, который представляет собой инструмент командной строки, используемый для работы с хранилищем Google на GCP. Инструмент предлагает три уровня хранения с разной доступностью и ценой.

  • 02:10:00 Спикер демонстрирует, как загружать и управлять файлами в Google Cloud Storage с помощью gsutil. Во-первых, пользователь должен настроить проект для работы внутри и создать корзину с помощью gsutil mb, помня, что имя каждой корзины должно быть уникальным. Затем выступающий объясняет, как скопировать файл в корзину и предоставить к нему публичный доступ, используя списки управления доступом (ACL), чтобы контролировать, кто может читать и записывать данные. Докладчик также демонстрирует, как загружать и копировать файлы в другую корзину с помощью gsutil и использовать ключ -m для ускорения процесса загрузки. В заключение докладчик показывает, как экспортировать данные из реляционной базы данных в два файла и загрузить их в GCP с помощью облачного хранилища.

  • 02:15:00 Докладчик демонстрирует, как загрузить два набора данных в Google Cloud Platform BigQuery, соединить их с помощью SQL и создать представление для построения моделей машинного обучения. После экспорта данных из SQL Server и сохранения их в виде CSV-файлов спикер загружает их в корзину облачного хранилища GCP, загружает в BigQuery и объединяет с помощью простого оператора соединения. Наконец, докладчик показывает, как создать представление этого большого набора данных для использования в моделях машинного обучения.

  • 02:20:00 Спикер рассказывает о процессе создания таблицы в Google BigQuery на облачной платформе для своего набора данных проекта Titanic. Они загружают набор данных из своего локального источника, автоматически определяют схему из CSV-файла и пропускают первую строку, так как она содержит информацию заголовка. После успешного создания таблицы они запрашивают ее и подтверждают, что данные и заголовки отображаются правильно. Спикер отмечает, что теперь набор данных готов для следующих шагов проекта.
Machine Learning with BigQuery on Google's Cloud Platform
Machine Learning with BigQuery on Google's Cloud Platform
  • 2022.04.25
  • www.youtube.com
A complete look at BigQuery for machine learning.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikbot.comThere are two core paths on Lo...
 

Визуализация данных с помощью matplotlib за 1 час



Визуализация данных с помощью matplotlib за 1 час

В этом видео инструктор рассказывает о важности визуализации данных в машинном обучении и объясняет, как она может помочь разобраться в больших объемах собранных данных. В курсе рассматриваются две основные библиотеки Python для визуализации данных, Matplotlib и Seaborn.

Преподаватель заявляет, что курс в первую очередь предназначен для инженеров по машинному обучению, инженеров по данным и специалистов по данным, которые хотят изучить Python. Чтобы проиллюстрировать использование Matplotlib, приведен простой пример построения кривой. Философия Matplotlib вращается вокруг использования существующего языка Python, который стал стандартом для построения моделей машинного обучения и обработки данных. Комбинируя Matplotlib с другими пакетами Python, пользователи могут воспользоваться многочисленными пакетами, доступными для различных задач.

В видео подчеркивается важность использования пакета NumPy вместе с Matplotlib для научных вычислений. В то время как Matplotlib может работать без NumPy, использование NumPy может значительно сэкономить время и усилия. NumPy предоставляет мощный объект многомерного массива и функции для управления им. Пример демонстрируется в видео, где кривая со 100 точками генерируется с использованием NumPy для вычисления координат x и y. Этот подход оказывается намного быстрее, чем выполнение операции с использованием чистого Python. Кроме того, в видео рассказывается о построении двух кривых на одном графике для сравнения, построении данных из файла путем извлечения и организации данных с использованием кода Python, а также о линейном построении точек вместо элементов.

В этом руководстве рассматривается создание различных типов гистограмм с использованием библиотеки Matplotlib. Представлена специальная функция для создания гистограмм «bar», которая принимает координату x для каждого столбца и высоту каждого столбца в качестве входных параметров. Настраивая дополнительные параметры, пользователи могут создавать различные эффекты и даже генерировать горизонтальные полосы с помощью функции «barh». В учебнике также рассматривается построение нескольких столбчатых диаграмм на одном графике и создание столбцов с накоплением с использованием специального параметра в функции «bar». Кроме того, в видео кратко рассказывается о создании круговых диаграмм с использованием функции «пирог».

В руководстве объясняются различные функции, используемые для визуализации данных с помощью Matplotlib. Первая рассматриваемая функция — это гистограммы, представляющие собой графическое представление распределения вероятностей. Обсуждаются функция «Hist» и ее параметры, позволяющие пользователям легко отображать данные в виде гистограмм. Вторая рассматриваемая функция — это ящичные диаграммы, которые облегчают сравнение распределений значений. В видео объясняются компоненты коробчатой диаграммы, включая квартили, медиану, среднее значение и статистические величины набора данных, а также демонстрируется, как их генерировать с помощью функции «ящичная диаграмма». Наконец, в учебнике рассматривается изменение графиков с использованием разных цветов и стилей, например определение цветов с использованием триплетов, четверок или имен цветов HTML, а также установка цвета графика кривой.

Видео продолжается объяснением того, как добавить цвет к точечным диаграммам, гистограммам и круговым диаграммам с помощью параметра «цвет». Этот параметр позволяет пользователям управлять отдельными цветами точек или изменять общий цвет для всех точек. В видео также затрагивается вопрос импорта библиотек в виде модулей, использования псевдонимов для упрощения написания кода и уточнения представления переменных. Подчеркивается, что почти все в Matplotlib и Python включает функции, такие как функция «pi» и функция «show».

Далее в учебнике рассматриваются пользовательские цветовые схемы и образцы линий при создании коробчатых диаграмм, маркеров и форм линий. Он демонстрирует создание пользовательских маркеров с использованием предопределенных форм и определение пользовательских маркеров с использованием символов математического текста. Кроме того, в нем объясняется, как легко изменить настройки Matplotlib по умолчанию с помощью объекта централизованной конфигурации, что позволяет пользователям адаптировать визуальный стиль, например черный фон и белые аннотации, к различным контекстам использования.

Ведущий объясняет, как сохранить график в файл с помощью функции «savefig» в Matplotlib. Они также охватывают добавление аннотаций к графику, включая заголовок, метки для осей x и y, ограниченную рамку и стрелки. Видео демонстрирует процесс добавления этих аннотаций для повышения визуальной ясности и понимания графика. Кроме того, он демонстрирует, как вручную управлять расстоянием между делениями в Matplotlib для точной настройки. В видео освещаются различные функции, доступные в Matplotlib для аннотирования графиков и повышения их понятности для читателей.

Далее инструктор обсуждает визуализацию данных с помощью Matplotlib и представляет Seaborn, высокоуровневый интерфейс для Matplotlib. Seaborn предоставляет другие параметры и функции по сравнению с Matplotlib. Инструктор демонстрирует, как создавать визуализации с использованием встроенного набора данных Seaborn и цветных карт. Видео завершается представлением примеров создания факторного графика и использования цветовых карт для построения данных. На этих примерах зрители получают представление об использовании различных функций и инструментов в Matplotlib и Seaborn для улучшения своих навыков визуализации данных.

В видео объясняется, как масштабировать графики с помощью функции Seaborn set_context. Эта функция позволяет пользователям управлять элементами графика, такими как размер, в зависимости от контекста, в котором будет отображаться график. Затем разъясняется различие между двумя типами функций Seaborn: функциями уровня осей и функциями уровня фигур. Функции уровня осей работают на уровне осей и возвращают объект осей, в то время как функции уровня фигур создают графики, которые включают оси, организованные осмысленным образом. Наконец, видео содержит рекомендации по настройке осей для блочной диаграммы с использованием объекта подграфиков осей Matplotlib.

Этот всеобъемлющий видеоурок охватывает широкий круг тем, связанных с визуализацией данных с помощью Matplotlib и Seaborn. Он начинается с ознакомления с важностью визуализации данных в машинном обучении и использованием Matplotlib в качестве мощной библиотеки. В нем показано, как строить кривые, создавать гистограммы, генерировать гистограммы и диаграммы, а также настраивать цвета, маркеры и стили линий. В учебнике также рассказывается о сохранении графиков, добавлении аннотаций и управлении интервалом деления. Кроме того, он представляет Seaborn как альтернативный инструмент визуализации с собственным набором функций и возможностей. Следуя этому руководству, зрители могут улучшить свои навыки визуализации данных и эффективно сообщать о своих выводах с помощью этих мощных библиотек Python.

  • 00:00:00 Преподаватель знакомит с визуализацией данных и ее важностью в машинном обучении. Он подчеркивает необходимость осмысления больших объемов данных, собираемых по всему миру, и то, как визуализация данных может помочь в достижении этой цели. В этом курсе рассматриваются две наиболее широко используемые библиотеки для визуализации данных в Python, Matplotlib и Seaborn. Преподаватель объясняет, что этот курс в первую очередь предназначен для инженеров по машинному обучению, инженеров по данным и специалистов по данным, которые хотят изучать Python, и предоставляет простой пример построения кривой с использованием Matplotlib. Философия Matplotlib заключается в использовании преимуществ существующего языка Python, который стал золотым стандартом для построения моделей машинного обучения и обработки данных. Объединение Matplotlib с другими пакетами предполагает использование кода Python, поскольку для Python существует множество пакетов для различных задач.

  • 00:05:00 Видео объясняет важность использования пакета NumPy с Matplotlib для научных вычислений. Хотя Matplotlib может работать без NumPy, использование NumPy может сэкономить много времени и усилий, предоставляя мощный объект многомерного массива и функции для управления им. Видео включает в себя пример создания кривой со 100 точками с использованием NumPy для вычисления координат x и y, что намного быстрее, чем выполнение операции с использованием чистого Python. Кроме того, в видео рассказывается о построении двух кривых на одном графике для сравнения, построении данных из файла с использованием кода Python для извлечения и организации данных, а также о линейном построении точек вместо элементов.

  • 00:10:00 В видеоуроке показано, как создавать гистограммы различных типов с помощью библиотеки Matplotlib. Функция bar — это специальная функция для создания гистограмм, которая принимает координату x для каждого столбца и высоту каждого столбца в качестве входных параметров. Настраивая дополнительные параметры, мы можем создавать различные эффекты и даже создавать горизонтальные полосы с помощью функции bar h. В учебнике также рассказывается, как строить несколько гистограмм на одном графике и как строить гистограммы с накоплением, используя специальный параметр в функции гистограммы. Наконец, в учебнике рассматривается создание круговых диаграмм с использованием функции круговой диаграммы.

  • 00:15:00 В видеоуроке рассматриваются различные функции, используемые при визуализации данных с помощью matplotlib. Первая рассматриваемая функция — это гистограммы, графическое представление распределения вероятностей. Для создания гистограмм видео объясняет функцию hist и ее параметры, которые позволяют пользователям легко отображать данные. Вторая рассматриваемая функция — это ящичные диаграммы, которые позволяют легко сравнивать распределения значений. Видео объясняет анатомию блочной диаграммы, включая квартили, медиану, среднее и статистическое количество набора данных, а также то, как их генерировать с помощью функции блочной диаграммы. Наконец, в учебнике рассматривается изменение графиков с использованием различных цветов и стилей, включая определение цветов с помощью триплетов, четверок, имен цветов в формате html и настройку цвета графика кривой.

  • 00:20:00 В видео рассказывается, как добавить цвет к точечным диаграммам, гистограммам и круговым диаграммам, используя параметр «цвет» для управления цветами отдельных точек или изменения общего цвета для всех точек. В видео также обсуждается, как импортировать библиотеки в виде модулей, использовать псевдонимы для упрощения написания кода и какие переменные представляют. Кроме того, напоминаем зрителям, что почти все в matplotlib и Python включает функции, такие как функция «pi» и функция «show».

  • 00:25:00 Мы узнаем о пользовательских цветовых схемах и образцах линий при создании коробчатых диаграмм, маркеров и форм линий. Мы также узнаем, как создавать свои собственные маркеры, используя предопределенные формы, а также как определять наши собственные маркеры, используя символы математического текста. Кроме того, мы узнаем, как легко изменить настройки Matplotlib по умолчанию с помощью объекта централизованной конфигурации, что позволяет использовать черный фон и белые аннотации для различных контекстов использования.

  • 00:30:00 Ведущий объясняет, как сохранить график в файл с помощью функции «savefig» в Matplotlib. В них также рассказывается, как добавлять аннотации к графику, включая заголовок, метки для осей x и y, ограниченную рамку и стрелки. Кроме того, они демонстрируют, как вручную управлять расстоянием между делениями в Matplotlib. В видео освещаются различные функции, доступные в Matplotlib для аннотирования графиков и повышения их понятности для читателей.

  • 00:35:00 Преподаватель обсуждает визуализацию данных с помощью matplotlib и показывает, как добавлять локаторы осей и сетки на диаграммы. Затем видео переходит к знакомству с seaborn, высокоуровневым интерфейсом для matplotlib. Инструктор объясняет, как Seaborn предоставляет параметры, отличные от matplotlib, и показывает, как создавать визуализации с использованием встроенного набора данных и цветовых карт Seaborn. Видео завершается примерами создания факторного графика и использования цветовых карт для построения данных. В целом, зрители могут узнать, как использовать различные функции и инструменты в matplotlib и seaborn, чтобы улучшить свои навыки визуализации данных.

  • 00:40:00 В видео объясняется, как масштабировать графики с помощью функции набора контекста Seaborn. Функция установки контекста позволяет пользователям управлять элементами графика, такими как размер, в зависимости от контекста, в котором будет отображаться график. Затем в видео объясняется разница между двумя типами функций Seaborn: функциями уровня осей и функциями уровня фигуры. Функции уровня осей работают на уровне осей и возвращают объект осей, в то время как функции уровня фигур создают графики, включающие оси, организованные осмысленным образом. Наконец, в видео рассказывается, как установить оси для блочной диаграммы с помощью объекта подграфиков оси matplotlib.
Data Visualization with matplotlib in 1 Hour
Data Visualization with matplotlib in 1 Hour
  • 2022.04.29
  • www.youtube.com
In this FREE course let's learn the basics of creating data visualizations with the grandfather of visualization libraries in Python, matplotlib.LogikBot - A...
 

Руководство по глубокому обучению с помощью Python, TensorFlow и Keras



Руководство по глубокому обучению с помощью Python, TensorFlow и Keras

Приветствую всех и добро пожаловать в долгожданное обновление по глубокому обучению и Python с TensorFlow, а также в новое руководство по Chaos. Прошло более двух лет с тех пор, как я в последний раз освещал основы глубокого обучения в Python, и за это время были достигнуты значительные успехи. Погружение в глубокое обучение и работа с моделями глубокого обучения стало намного проще и доступнее.

Если вам интересно углубиться в код TensorFlow более низкого уровня и запутанные детали, вы все равно можете обратиться к старому видео. Однако, если вы хотите начать работу с глубоким обучением, вам больше не нужно проходить через это, потому что теперь у нас есть удобные высокоуровневые API, такие как Chaos, которые работают поверх TensorFlow. Эти API-интерфейсы делают глубокое обучение невероятно простым, позволяя любому, даже не имеющему предварительных знаний о глубоком обучении, следовать за ним.

В этом уроке мы кратко рассмотрим нейронные сети. Для начала давайте разберемся с основными компонентами нейронной сети. Основная цель любой модели машинного обучения, включая нейронные сети, — сопоставить входные данные с выходными. Например, учитывая входные данные X1, X2 и X3, мы стремимся определить, соответствует ли результат собаке или кошке. В этом случае выходной слой состоит из двух нейронов, представляющих возможность быть собакой или кошкой.

Для достижения этого сопоставления мы можем использовать один скрытый слой, где каждый вход, X1, X2 и X3, связан с нейронами в скрытом слое. Каждое из этих соединений имеет уникальный вес, связанный с ним. Однако, если мы ограничимся одним скрытым слоем, отношения между входами и выходами будут линейными. Чтобы зафиксировать нелинейные отношения, которые часто встречаются в сложных задачах, нам нужны два или более скрытых слоя. Нейронную сеть с двумя или более скрытыми слоями часто называют глубокой нейронной сетью.

Давайте добавим еще один скрытый слой, полностью соединив его с предыдущим слоем. Каждая связь между слоями имеет свой уникальный вес. В конечном итоге выходные данные получаются из последнего слоя, где каждое соединение с выходным слоем имеет уникальный вес. На уровне отдельного нейрона нейрон получает входные данные, которые могут быть либо значениями входного слоя (X1, X2, X3), либо входными данными от других нейронов. Эти входные данные суммируются с учетом связанных с ними весов. Кроме того, функция активации применяется для имитации срабатывания нейрона или нет. Общие функции активации включают ступенчатую функцию или сигмовидную функцию, которая возвращает значения от 0 до 1. В нашей нейронной сети выходной слой использует сигмовидную функцию активации, присваивая вероятности каждому классу (собаке или кошке). Затем функция Arg max используется для определения прогнозируемого класса на основе наибольшей вероятности.

Теперь, когда у нас есть общее представление о нейронных сетях, давайте приступим к их созданию с помощью TensorFlow. Во-первых, убедитесь, что у вас установлен TensorFlow, выполнив команду «pip install --upgrade tensorflow». Вы можете импортировать TensorFlow как «tf» и проверить текущую версию, используя «tf.version». Для этого руководства рекомендуется Python 3.6 или выше, хотя ожидается, что TensorFlow будет поддерживать Python 3.7 и более поздние версии в будущем.

Далее мы импортируем набор данных для работы. Мы будем использовать набор данных MNIST, который состоит из 28x28 изображений рукописных цифр от 0 до 9. Эти изображения будут переданы в нейронную сеть, и сеть будет предсказывать соответствующую цифру. Мы разделим набор данных на обучающие и тестовые переменные: X_train, Y_train, X_test и Y_test.

Чтобы обеспечить лучшую производительность, мы нормализуем данные. Значения пикселей изображений в настоящее время варьируются от 0 до 255, поэтому мы будем масштабировать их от 0 до 1, используя функцию TF.keras.utils.normalize.

Для построения модели будем использовать высокоуровневый API Chaos, упрощающий процесс создания и обучения нейронных сетей в TensorFlow. Chaos предоставляет последовательную модель под названием Sequential, которая позволяет нам складывать слои один за другим.

Вот пример того, как вы можете создать модель нейронной сети с помощью Chaos:

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dense

# Create a sequential model
model = Sequential()

# Add a flatten layer to convert the input into a 1D array
model.add(Flatten(input_shape=(28, 28)))

# Add a dense layer with 128 neurons and ReLU activation
model.add(Dense(128, activation='relu'))

# Add another dense layer with 10 neurons for the output and softmax activation
model.add(Dense(10, activation='softmax'))

# Compile the model
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])


В приведенном выше коде мы импортируем необходимые модули из TensorFlow и Chaos. Мы создаем модель Sequential и добавляем к ней слои с помощью метода add. Первый слой представляет собой слой Flatten, который преобразует ввод 2D (изображения 28x28) в массив 1D. Затем мы добавляем плотный слой со 128 нейронами и активацией ReLU. Наконец, мы добавляем выходной слой с 10 нейронами (соответствующими 10 цифрам) и активацией softmax.

После определения модели мы компилируем ее с помощью метода compile. Мы указываем оптимизатор (в данном случае «адам»), функцию потерь («sparse_categorical_crossentropy» для многоклассовой классификации) и метрики для оценки во время обучения.

Теперь, когда мы определили и скомпилировали нашу модель, мы можем приступить к ее обучению на наборе данных MNIST. Мы будем использовать метод подгонки для обучения модели.

# Train the model model.fit(X_train, Y_train, epochs= 10 , validation_data=(X_test, Y_test))

В приведенном выше коде мы передаем данные обучения (X_train и Y_train) методу подгонки вместе с количеством эпох для обучения. Мы также предоставляем данные проверки (X_test и Y_test), чтобы оценить производительность модели на невидимых данных во время обучения.

После обучения модели мы можем делать прогнозы с помощью метода прогнозирования:

# Make predictions predictions = model.predict(X_test)

В приведенном выше коде мы передаем тестовые данные (X_test) методу прогнозирования, и он возвращает прогнозируемые вероятности для каждого класса.

Это краткий обзор создания и обучения нейронной сети с использованием Chaos в TensorFlow. Вы можете дополнительно изучить различные слои, функции активации, оптимизаторы и другие параметры, чтобы настроить свою модель.

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

  1. Методы регуляризации:

    • Dropout: Dropout — это метод регуляризации, используемый для предотвращения переобучения. Он случайным образом устанавливает часть входных единиц в 0 при каждом обновлении во время обучения, что помогает предотвратить слишком сильную зависимость модели от какого-либо конкретного набора функций.

    • Регуляризация L1 и L2: Регуляризация L1 и L2 — это методы, используемые для добавления штрафа к функции потерь для предотвращения больших весов в сети. Регуляризация L1 добавляет абсолютное значение весов к функции потерь, поощряя разреженность, в то время как регуляризация L2 добавляет к функции потерь квадраты весов, поощряя малые веса.

  2. Расширенные функции активации:

    • Leaky ReLU: Leaky ReLU — это функция активации, которая решает проблему «умирающего ReLU», допуская небольшой наклон для отрицательных входных данных. Он вводит небольшой отрицательный наклон, когда вход отрицательный, что помогает предотвратить гибель нейронов во время обучения.

    • Экспоненциальная линейная единица (ELU): ELU — это функция активации, которая сглаживает выходные данные для отрицательных входных данных, позволяя активации принимать отрицательные значения. Было показано, что это помогает улучшить обучение нейронных сетей и уменьшить склонность к положительным значениям.

    • Swish: Swish — это функция активации, которая выполняет плавную интерполяцию между линейной и сигмовидной функциями. Было показано, что в некоторых случаях он дает лучшие результаты по сравнению с другими функциями активации, такими как ReLU и сигмоид.

  3. Трансферное обучение. Трансферное обучение — это метод, который использует предварительно обученные модели для решения новых задач или повышения производительности модели в связанной задаче. Вместо обучения модели с нуля вы можете использовать предварительно обученную модель в качестве отправной точки и настроить ее для конкретной задачи или набора данных. Это особенно полезно, когда у вас есть ограниченные данные для вашей конкретной задачи.

  4. Настройка гиперпараметров. Гиперпараметры — это параметры, которые не изучаются моделью, но влияют на процесс обучения, такие как скорость обучения, размер пакета, количество слоев и т. д. Настройка этих гиперпараметров может значительно повлиять на производительность модели. Такие методы, как поиск по сетке, случайный поиск и байесовская оптимизация, могут использоваться для систематического поиска в пространстве гиперпараметров и поиска наилучшей комбинации.

  5. Оценка модели. Оценка производительности модели имеет решающее значение для оценки ее эффективности. Общие метрики оценки для задач классификации включают точность, воспроизводимость, полноту, оценку F1 и площадь под кривой рабочих характеристик приемника (ROC AUC). Важно выбрать подходящие показатели в зависимости от решаемой проблемы и характера данных.

  6. Обработка несбалансированных наборов данных. Несбалансированные наборы данных возникают, когда распределение классов не равно, что может привести к необъективным моделям. Решить эту проблему могут такие методы, как избыточная выборка класса меньшинства, недостаточная выборка класса большинства или их комбинация. Кроме того, использование показателей оценки, таких как точность, полнота и оценка F1, может обеспечить лучшее понимание производительности модели на несбалансированных наборах данных.

Помните, что создание и обучение нейронных сетей — это повторяющийся процесс. Он включает в себя экспериментирование, тонкую настройку и постоянное совершенствование для достижения желаемых результатов.

Deep Learning with Python, TensorFlow, and Keras tutorial
Deep Learning with Python, TensorFlow, and Keras tutorial
  • 2018.08.11
  • www.youtube.com
An updated deep learning introduction using Python, TensorFlow, and Keras.Text-tutorial and notes: https://pythonprogramming.net/introduction-deep-learning-p...
 

Загрузка собственных данных — основы глубокого обучения с помощью Python, TensorFlow и Keras, часть 2



Загрузка собственных данных — основы глубокого обучения с помощью Python, TensorFlow и Keras, часть 2

Добро пожаловать во вторую часть нашего руководства по глубокому изучению Python TensorFlow в Karros. В этом руководстве мы сосредоточимся на загрузке внешнего набора данных. В частности, мы будем использовать набор данных о кошках и собаках от Microsoft, изначально созданный для Kaggle. Цель состоит в том, чтобы научить нейронную сеть определять, содержит ли изображение кошку или собаку.

Для начала загрузите набор данных о кошках и собаках с веб-сайта Microsoft. После того, как вы загрузили и извлекли набор данных, вы должны увидеть два каталога: «кошка» и «собака». Эти каталоги содержат изображения кошек и собак соответственно. В каждом каталоге должно быть значительное количество образцов, около 12 500, обеспечивающих достаточное количество примеров для обучения нашей модели.

Теперь давайте перейдем к части кодирования. Нам нужно импортировать несколько библиотек: numpy как np, matplotlib.pyplot как plt и OpenCV как cv2. Если у вас не установлены эти библиотеки, вы можете использовать pip для их установки.

Далее мы определим каталог данных, в котором находится наш набор данных. Вы можете указать путь к вашему набору данных соответственно. Мы также определим категории как «собака» и «кошка», чтобы они соответствовали каталогам в нашем наборе данных.

Мы будем перебирать каждую категорию и соответствующие изображения, используя библиотеку ОС. Для каждого изображения мы преобразуем его в оттенки серого с помощью библиотеки cv2. Мы выбрали оттенки серого, потому что считаем, что цвет не имеет решающего значения для различения кошек и собак в этой конкретной задаче.

Для визуализации изображений мы будем использовать matplotlib.pyplot. Мы покажем пример изображения, используя plt.imshow и карту цветов в градациях серого. Этот шаг позволяет нам убедиться, что изображения загружены правильно.

После проверки изображений мы приступим к изменению их размера до единой формы. Нам нужно выбрать целевой размер, например 50x50 пикселей, чтобы обеспечить согласованность. Мы изменим размер изображений с помощью функции cv2.resize и сохраним массивы изображений с измененным размером.

Теперь мы создадим обучающий набор данных. Мы инициализируем пустой список с именем «training_data» и определяем функцию с именем «create_training_data». В этой функции мы перебираем изображения и присваиваем числовые метки (0 для собак, 1 для кошек), используя индекс категории в списке «категории».

Для каждого изображения мы изменяем его размер до выбранного целевого размера. Мы добавляем массив изображений с измененным размером и соответствующую ему метку в список training_data. Мы также обрабатываем любые потенциальные исключения, связанные с неработающими изображениями в наборе данных.

После того, как мы создали набор обучающих данных, мы должны проверить баланс данных. В такой задаче бинарной классификации важно иметь равное количество образцов для каждого класса (50% собак и 50% кошек). Несбалансированные данные могут привести к необъективным прогнозам модели. Если ваши данные несбалансированы, вы можете использовать веса классов во время обучения, чтобы смягчить эту проблему.

Чтобы обеспечить случайность и предотвратить изучение порядка изображений моделью, мы перемешиваем обучающие данные с помощью функции random.shuffle.

Теперь, когда наши данные перемешаны, мы можем упаковать их в переменные для функций (X) и меток (Y). Мы инициализируем пустые списки для X и Y и повторяем обучающие данные, добавляя функции и метки к соответствующим спискам. Наконец, мы преобразуем X в массив NumPy и изменяем его форму, используя np.array и форму каждой функции.

На данный момент мы подготовили наши данные для обучения нейронной сети. Теперь мы готовы приступить к дальнейшим шагам, таким как разделение данных на наборы для обучения и проверки, построение модели и ее обучение с использованием TensorFlow.

Минус 1 — это заполнитель, который автоматически вычисляет размер на основе длины массива и формы каждого элемента. Итак, в этом случае мы изменяем массив X, чтобы он имел форму (-1, image_size, image_size). Это гарантирует, что данные находятся в правильном формате для ввода в нейронную сеть.

Далее нам нужно нормализовать значения пикселей изображений. В настоящее время значения пикселей находятся в диапазоне от 0 до 255, что соответствует интенсивности оттенков серого. Нейронные сети обычно работают лучше, когда входные данные нормализованы, то есть значения масштабируются до меньшего диапазона. Мы можем добиться этого, разделив значения пикселей на 255,0, что позволит масштабировать их от 0 до 1,0. Это можно сделать с помощью следующего кода:

x = x / 255.0

Теперь, когда у нас есть предварительно обработанные данные, мы можем перейти к созданию модели глубокого обучения с использованием TensorFlow.
Loading in your own data - Deep Learning basics with Python, TensorFlow and Keras p.2
Loading in your own data - Deep Learning basics with Python, TensorFlow and Keras p.2
  • 2018.08.18
  • www.youtube.com
Welcome to a tutorial where we'll be discussing how to load in our own outside datasets, which comes with all sorts of challenges!First, we need a dataset. L...
 

Сверточные нейронные сети — основы глубокого обучения с помощью Python, TensorFlow и Keras, часть 3



Сверточные нейронные сети — основы глубокого обучения с помощью Python, TensorFlow и Keras, часть 3

Всем привет и добро пожаловать в третью часть нашей серии руководств по Deep Learning with Python, TensorFlow и Keras. В этом видео мы сосредоточимся на сверточных нейронных сетях (CNN) и на том, как их применять для классификации собак и кошек с использованием набора данных, который мы создали в предыдущем видео.

Прежде чем мы углубимся в CNN, давайте быстро рассмотрим, как они работают и почему они полезны для данных изображений. CNN включают несколько этапов: свертка, объединение, а затем еще одна свертка и объединение. Основная идея свертки заключается в извлечении полезных функций из изображения. Мы используем сверточное окно, обычно представленное в виде матрицы (например, 3x3), для сканирования изображения и упрощения информации в окне до одного значения. Затем окно смещается, и этот процесс повторяется несколько раз. Шаг, который определяет, насколько сильно перемещается окно, также можно отрегулировать.

С Keras мы можем указать размер окна, а большинство других деталей позаботятся автоматически. Если вы хотите глубже вникнуть в тонкости глубокого обучения, я рекомендую ознакомиться с серией руководств «Практическое машинное обучение», где более подробно объясняется внутренняя работа, особенно для необработанного кода TensorFlow.

На выходе сверточный слой представляет собой набор признаков, извлеченных из изображения. Затем эти функции обычно передаются через слой пула, наиболее распространенным типом которого является максимальный пул. Максимальный пул выбирает максимальное значение в окне и многократно сдвигает его, эффективно снижая дискретизацию данных.

Идея более высокого уровня, лежащая в основе CNN, заключается в том, что они постепенно извлекают более сложные функции из изображения по мере того, как вы углубляетесь в сеть. Начальные слои могут идентифицировать края и линии, в то время как более глубокие слои могут распознавать более сложные формы, такие как круги или квадраты. В конце концов, сеть может научиться идентифицировать определенные объекты или шаблоны.

Чтобы реализовать CNN, нам нужно импортировать необходимые библиотеки. Мы импортируем TensorFlow и модули Keras, которые будем использовать, такие как Sequential, Dense, Dropout, Activation, Conv2D и MaxPooling2D. Мы также импортируем pickle для загрузки нашего набора данных.

Прежде чем подавать данные в нейронную сеть, мы должны рассмотреть их нормализацию. В нашем случае мы можем масштабировать данные пикселей, разделив их на 255, поскольку значения пикселей находятся в диапазоне от 0 до 255. В качестве альтернативы мы можем использовать функцию нормализации из хаоса.utils для более сложных сценариев нормализации.

Далее мы начинаем строить нашу модель с помощью Sequential API. Мы добавляем слой Conv2D с 64 единицами и размером окна 3x3. input_shape устанавливается динамически с помощью X.shape. Затем мы добавляем слой активации, используя выпрямленную линейную функцию активации (ReLU). После этого мы добавляем слой максимального пула с размером окна 2x2.

Мы повторяем этот процесс, добавляя еще один слой Conv2D и соответствующий слой максимального пула. На данный момент у нас есть 2D сверточная нейронная сеть.

Чтобы передать извлеченные объекты в полносвязный слой, нам нужно сгладить данные. Мы добавляем слой Flatten перед добавлением последнего слоя Dense с 64 узлами. Наконец, мы добавляем выходной слой с одним узлом и указываем функцию активации, которая может быть категориальной или бинарной.

Мы компилируем модель, указав функцию потерь (категориальная или бинарная кросс-энтропия), оптимизатор (например, Адам) и метрики для оценки производительности модели (например, точность).

Чтобы обучить модель, мы используем метод подгонки, передавая наши входные данные X и метки Y. Мы также можем указать размер партии (например, 32).

Мы будем использовать следующий код для обучения модели:

model.fit(X, Y, batch_size= 32 , validation_split= 0.1 )

Этот код будет обучать модель, используя входные данные X и соответствующие метки Y. Мы устанавливаем размер пакета равным 32, что означает, что модель будет обрабатывать 32 выборки за раз во время обучения. Для параметра validation_split установлено значение 0,1, что означает, что 10% данных будут использоваться для проверки при обучении модели.

Как только модель обучена, мы можем оценить ее производительность, используя тестовые данные. Мы можем использовать следующий код для оценки модели:

model.evaluate(X_test, Y_test)

Здесь X_test и Y_test представляют тестовые данные и метки соответственно. Этот код вернет значение потерь и точность модели на тестовых данных.

После оценки модели мы можем использовать ее для прогнозирования новых, невидимых данных. Мы можем использовать функцию предсказания (), чтобы получить предсказанные метки для новых данных. Вот пример:

predictions = model.predict(X_new)

Этот код будет генерировать прогнозы для новых данных X_new. Прогнозы будут вероятностями для каждого класса, и мы можем использовать функцию argmax(), чтобы найти класс с наибольшей вероятностью. Вот пример:

predicted_labels = np.argmax(predictions, axis= 1 )

Этот код назначит класс с наибольшей вероятностью в качестве прогнозируемой метки для каждой выборки в новых данных.

Вот и все! Теперь вы обучили модель сверточной нейронной сети классифицировать собак и кошек и использовали ее для прогнозирования новых данных. Не забудьте сохранить обученную модель для использования в будущем, если это необходимо.

Convolutional Neural Networks - Deep Learning basics with Python, TensorFlow and Keras p.3
Convolutional Neural Networks - Deep Learning basics with Python, TensorFlow and Keras p.3
  • 2018.08.19
  • www.youtube.com
Welcome to a tutorial where we'll be discussing Convolutional Neural Networks (Convnets and CNNs), using one to classify dogs and cats with the dataset we bu...
 

Анализ моделей с помощью TensorBoard — глубокое обучение с помощью Python, TensorFlow и Keras, часть 4



Анализ моделей с помощью TensorBoard — глубокое обучение с помощью Python, TensorFlow и Keras, часть 4

Добро пожаловать в четвертую часть серии руководств «Глубокое обучение с помощью Python: TensorFlow и Keras». В этом и следующем видео мы обсудим, как анализировать и оптимизировать наши модели с помощью TensorBoard. TensorBoard — это мощный инструмент, который позволяет нам визуализировать обучение наших моделей с течением времени. Его основная цель — помочь нам понять различные аспекты производительности нашей модели, такие как точность, точность проверки, потери и потери проверки. Кроме того, в TensorBoard есть более продвинутые функции, которые мы можем изучить в будущих руководствах.

Прежде чем мы углубимся в TensorBoard, давайте обратимся к небольшой детали. Хотя это и не имеет решающего значения для этого урока, я хочу отметить, что даже небольшие модели, как правило, потребляют значительный объем памяти графического процессора. Если вы планируете запускать несколько моделей одновременно, вы можете указать долю памяти графического процессора, которую должна использовать каждая модель. Делая это, вы можете избежать потенциальных проблем при запуске нескольких моделей или столкновении с ограничениями памяти. Например, я обычно настраиваю модель на использование одной трети памяти графического процессора. Этот подход оказался полезным при одновременном запуске нескольких моделей, например, в серии «Python Plays GTA», включающей обнаружение объектов и автономное вождение. Это просто удобный совет, который может сэкономить вам время и нервы.

Теперь продолжим основную тему. Первое, что я хочу решить, это добавить функцию активации после плотного слоя. С моей стороны было ошибкой не включить его изначально. Добавление функции активации необходимо, поскольку без нее плотный слой становится линейной функцией активации, что не подходит для наших целей. Мы хотим избежать регрессии и обеспечить оптимальную работу нашей модели. Итак, давайте быстро исправим это, вставив функцию активации перед плотным слоем.

После внесения этой поправки мы должны наблюдать значительное улучшение точности. Пока модель обучается, давайте на минутку изучим документацию TensorFlow и узнаем о различных доступных обратных вызовах Keras. В нашем случае мы будем использовать обратный вызов TensorBoard для взаимодействия с TensorBoard. Однако стоит отметить, что есть и другие полезные обратные вызовы, такие как ранняя остановка на основе определенных параметров, планирование скорости обучения и контрольные точки модели. Контрольные точки модели особенно полезны, когда вы хотите сохранять модель через определенные промежутки времени, такие как наилучшие потери или точность проверки. Сейчас давайте сосредоточимся на обратном вызове TensorBoard, но я могу кратко коснуться других обратных вызовов в будущем видео.

Чтобы использовать обратный вызов TensorBoard, нам нужно импортировать его из модуля обратных вызовов TensorFlow Keras. Добавьте следующую строку кода для импорта TensorBoard:

from tensorflow.keras.callbacks import TensorBoard

Теперь, когда мы импортировали необходимый модуль, давайте выполним некоторые действия. Всегда рекомендуется давать модели осмысленное имя, особенно при работе с несколькими моделями. В этом случае мы можем назвать нашу модель как-нибудь вроде «cats_vs_dogs_CNN_64x2». Кроме того, давайте добавим временную метку к имени, чтобы обеспечить уникальность. Включение метки времени полезно при переобучении модели или во избежание путаницы с версиями модели. Итак, в начале нашего кода давайте определим имя модели и отметку времени следующим образом:

import time model_name = f"cats_vs_dogs_CNN_64x2_ { int (time.time())} "

Теперь, когда у нас есть уникальное имя модели, мы можем создать объект обратного вызова TensorBoard. Назначьте объект TensorBoard переменной с именем tensorboard_callback, используя следующий код:

tensorboard_callback = TensorBoard(log_dir= f"logs/ {model_name} " )

Здесь мы указываем каталог журнала для TensorBoard, используя параметр log_dir. Мы форматируем путь к каталогу журнала, используя имя модели, которое мы определили ранее.

Кроме того, тензорная доска позволяет нам анализировать и оптимизировать наши модели, предоставляя визуализацию процесса обучения. В первую очередь он фокусируется на таких показателях, как точность, точность проверки, потери и потери проверки. Эти показатели помогают нам понять, как наша модель работает с течением времени, и определить области для улучшения. В то время как точность и потери обычно контролируются, Tensor Board предлагает более продвинутые функции, которые мы можем изучить в будущем.

Чтобы начать использовать тензорную доску, нам сначала нужно сделать небольшое дополнение к нашему коду. Хотя это не имеет решающего значения для этого урока, стоит упомянуть. Добавив несколько строк кода, мы можем выделить определенную часть памяти графического процессора для нашей модели. Это полезно при одновременном запуске нескольких моделей или при возникновении проблем с VRAM. Это позволяет нам контролировать распределение GPU и избегать возможных сбоев или переполнения памяти. В нашем случае мы выделяем треть GPU для модели. Это обеспечивает плавное выполнение и предотвращает любые конфликты при работе с другими моделями или проектами.

Двигаясь дальше, давайте сосредоточимся на реализации тензорной доски. Во-первых, нам нужно импортировать необходимые зависимости. Мы импортируем модуль «tensorboard» из пакета «tensorflow.keras.callbacks». Этот модуль обеспечивает функциональность обратного вызова для тензорной платы.

Далее мы хотим присвоить нашей модели осмысленное имя. Присвоение каждой модели отдельного имени необходимо при работе с несколькими моделями. Это помогает нам отслеживать эксперименты и избегать путаницы. В этом случае мы назовем нашу модель «cat's_first_dog_CNN_64x2_good_enough». Кроме того, мы добавляем временную метку к имени, используя текущее значение времени. Это обеспечивает уникальность и предотвращает случайную перезапись моделей.

Назвав нашу модель, мы можем определить объект обратного вызова тензорной доски. Мы создаем экземпляр класса «TensorBoard» и присваиваем его переменной «tensorboard». Мы передаем конструктору путь к каталогу журнала. Каталог журналов — это место, где Tensor Board будет хранить журналы и данные, относящиеся к нашей модели. Мы используем строковое форматирование, чтобы включить имя модели в путь к каталогу журнала.

Как только у нас будет готов объект обратного вызова, мы можем включить его в процесс обучения нашей модели. В методе «подгонки» нашей модели мы передаем объект обратного вызова в параметр «обратные вызовы» в виде списка. В этом случае у нас есть только один обратный вызов, который является обратным вызовом тензорной доски. Однако стоит отметить, что при необходимости вы можете включить в список несколько обратных вызовов.

Теперь с интегрированным обратным вызовом мы можем обучить нашу модель. Для этого примера мы устанавливаем количество эпох равным 10. Однако не стесняйтесь настраивать количество эпох в соответствии с вашими требованиями. По мере обучения модели tensor board начнет генерировать журналы и визуализации на основе указанных метрик.

Чтобы увидеть тензорную доску в действии, нам нужно открыть командное окно или терминал и перейти в каталог, содержащий файлы журнала. Оказавшись в правильном каталоге, мы запускаем команду tensor board, введя «tensorboard --logdir logs» в командной строке. Эта команда запускает сервер Tensor Board и предоставляет локальный URL-адрес, по которому мы можем получить доступ к интерфейсу Tensor Board.

После запуска tensor board мы можем открыть веб-браузер и ввести URL-адрес, указанный в командной строке. Это отобразит интерфейс тензорной доски, где мы можем визуализировать ход обучения нашей модели. Интерфейс показывает различные графики, включая точность в выборке, потери в выборке, точность за пределами выборки и потери за пределами выборки. Мы анализируем эти показатели, чтобы отслеживать производительность модели и принимать обоснованные решения относительно ее оптимизации.

Наблюдая за графиками, мы можем определить закономерности и тенденции в поведении модели. Например, если потери при проверке начинают увеличиваться, а точность проверки остается неизменной или снижается, это указывает на переобучение. С другой стороны, если и точность проверки, и потери со временем улучшаются, это говорит о том, что модель обучается эффективно.

Плата Tensor предоставляет мощную платформу для анализа и оптимизации моделей. Его визуализации дают ценную информацию о процессе обучения и облегчают принятие решений. Используя тензорную доску, мы можем упростить процесс разработки модели и добиться лучших результатов.

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

Вот и все для этого урока. Спасибо за просмотр, и увидимся в следующем видео!

Analyzing Models with TensorBoard - Deep Learning with Python, TensorFlow and Keras p.4
Analyzing Models with TensorBoard - Deep Learning with Python, TensorFlow and Keras p.4
  • 2018.08.24
  • www.youtube.com
Welcome to part 4 of the deep learning basics with Python, TensorFlow, and Keras tutorial series. In this part, what we're going to be talking about is Tenso...
 

Оптимизация с помощью TensorBoard — глубокое обучение с Python, TensorFlow и Keras часть 5



Оптимизация с помощью TensorBoard — глубокое обучение с Python, TensorFlow и Keras часть 5

Привет всем и добро пожаловать в пятую часть серии руководств по глубокому обучению с помощью Python TensorBoard и Keras. В этом руководстве мы сосредоточимся на TensorBoard и на том, как мы можем использовать его для оптимизации моделей путем визуализации различных попыток создания моделей. Давайте погрузимся в это!

Во-первых, давайте проанализируем модель и определим аспекты, которые мы можем настроить, чтобы улучшить ее производительность. Хотя наша текущая модель достигла точности около 79%, мы считаем, что можем добиться большего. Некоторые потенциальные области для оптимизации включают оптимизатор, скорость обучения, количество плотных слоев, единицы на слой, единицы активации, размер ядра, шаг, скорость затухания и многое другое. Имея множество вариантов для изучения, мы можем в конечном итоге протестировать тысячи моделей. Итак, с чего начнем?

Чтобы упростить задачу, начнем с самых простых модификаций. Мы сосредоточимся на настройке количества слоев, узлов на слой и на том, следует ли включать плотный слой в конце. В качестве количества плотных слоев мы будем рассматривать ноль, один или два. Что касается размеров слоя, мы будем использовать значения 32, 64 и 128. Эти значения являются условными, и вы можете выбрать другие в соответствии со своими предпочтениями.

Теперь давайте внедрим эти изменения в наш код. Мы определим некоторые переменные для выбора, который мы хотим сделать, например, количество плотных слоев и размеры слоев. Мы пройдемся по этим переменным, чтобы создать различные комбинации моделей. Кроме того, мы создадим имя для каждой модели, отражающее ее конфигурацию.

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

Со всеми внесенными изменениями пришло время запустить код. Однако, поскольку обучение многочисленных моделей может занять много времени, я уже запустил код и сохранил результаты. Перейдем к анализу результатов с помощью TensorBoard.

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

Из результатов становится очевидным, что модели с тремя сверточными слоями и нулевыми плотными слоями стабильно работают хорошо. Конкретное количество узлов на слой кажется менее значительным. Однако стоит отметить, что более плотные слои, такие как 512 или 256 узлов, могут дать еще лучшие результаты. Чтобы убедиться в этом, вы можете протестировать различные размеры плотного слоя.

Подводя итог, мы начали с изучения различных конфигураций моделей с помощью TensorBoard. Мы обнаружили, что модели с тремя сверточными слоями и без плотных слоев стабильно работают хорошо. Мы также определили, что количество узлов на слой может быть дополнительно оптимизировано. Тестируя различные размеры плотных слоев, мы потенциально можем еще больше повысить точность модели.

Имейте в виду, что это только отправная точка, и есть много других аспектов, которые вы можете настроить для оптимизации своих моделей. TensorBoard предоставляет ценный инструмент для визуализации и анализа этих вариантов модели, помогая вам принимать обоснованные решения по улучшению модели.

Optimizing with TensorBoard - Deep Learning w/ Python, TensorFlow & Keras p.5
Optimizing with TensorBoard - Deep Learning w/ Python, TensorFlow & Keras p.5
  • 2018.08.25
  • www.youtube.com
Welcome to part 5 of the Deep learning with Python, TensorFlow and Keras tutorial series. In the previous tutorial, we introduced TensorBoard, which is an ap...
 

Как использовать обученную модель — основы глубокого обучения с помощью Python, TensorFlow и Keras, часть 6



Как использовать обученную модель — основы глубокого обучения с помощью Python, TensorFlow и Keras, часть 6

Привет всем и добро пожаловать в часть 6 серии руководств по глубокому обучению в Python с помощью TensorFlow и Keras!

В этом видео мы обсудим, как использовать нашу обученную модель для прогнозирования новых изображений. Многие люди спрашивали об этом, так как они успешно обучили и протестировали свои наборы данных, но не знают, как использовать модель для прогнозирования на внешних изображениях. Итак, давайте углубимся в это!

Во-первых, нам нужно импортировать необходимые библиотеки. Мы импортируем cv2 для обработки изображений и tensorflow как TF для работы с нашей моделью. Нам также понадобится список категорий, который содержит ярлыки классов «собака» и «кошка», которые мы использовали во время обучения.

Далее мы определим функцию с именем prepare, которая принимает путь к файлу в качестве параметра. Эта функция будет обрабатывать шаги предварительной обработки, необходимые для входного изображения. Мы изменим размер изображения до определенного размера и преобразуем его в оттенки серого. Затем изображение будет возвращено в виде измененного массива numpy.

После этого мы загрузим нашу обученную модель с помощью функции TF.keras.models.load_model(). Ранее мы сохранили нашу модель как «модель CNN 64 на 3», поэтому загрузим ее с тем же именем.

Теперь мы готовы делать прогнозы. Мы определим переменную с именем предсказание и назначим ей результат вызова model.predict() для нашего подготовленного изображения. Важно отметить, что метод predict() ожидает список в качестве входных данных, даже если мы предсказываем по одному изображению. Итак, нам нужно передать подготовленное изображение в виде списка.

Получив результат прогноза, мы можем его распечатать. Однако прогноз в настоящее время представлен в виде вложенного списка. Чтобы сделать его более читабельным, мы можем преобразовать значение предсказания в целое число и использовать его в качестве индекса для извлечения соответствующей метки класса из списка категорий.

Наконец, мы можем напечатать предсказанную метку класса, которая показывает, классифицируется ли изображение как собака или кошка.

В этом уроке мы использовали два внешних изображения для тестирования нашей модели: одно — собаки с конусом стыда, а другое — неизвестного существа. Эти изображения не были частью нашего обучающего набора данных, поэтому мы делаем прогнозы на невидимых данных.

Чтобы попробовать это с собственными изображениями собак и кошек, выполните шаги, описанные в коде. Имейте в виду, что точность может варьироваться, но в среднем она должна быть около 80%.

Это все на данный момент! Я хочу поблагодарить наших недавних спонсоров: Майкла, Ника, Родриго и Папасан Э. Мы очень ценим вашу поддержку. Если у вас есть какие-либо вопросы, комментарии или предложения для будущих руководств, оставьте их ниже. Я также открыт для идей по использованию рекуррентных нейронных сетей, поэтому, если у вас есть простой набор данных, дайте мне знать.

Увидимся в следующем уроке, где мы будем изучать рекуррентные нейронные сети. А пока удачного кодирования!

How to use your trained model - Deep Learning basics with Python, TensorFlow and Keras p.6
How to use your trained model - Deep Learning basics with Python, TensorFlow and Keras p.6
  • 2018.08.31
  • www.youtube.com
In this part, we're going to cover how to actually use your model. We will us our cats vs dogs neural network that we've been perfecting.Text tutorial and sa...
 

Рекуррентные нейронные сети (RNN) — глубокое обучение с Python, TensorFlow и Keras часть 7


Рекуррентные нейронные сети (RNN) — глубокое обучение с Python, TensorFlow и Keras часть 7

Всем привет и добро пожаловать в 7-ю часть серии руководств «Глубокое обучение с помощью Python TensorFlow в хаосе». В этой части мы сосредоточимся на рекуррентной нейронной сети (RNN). Цель RNN состоит в том, чтобы зафиксировать значимость и важность порядка данных. Это особенно актуально для данных временных рядов, где данные организованы во времени, и для обработки естественного языка, где порядок слов в предложении имеет значение.

Чтобы проиллюстрировать концепцию, давайте рассмотрим пример предложения: «Некоторые люди сделали нейронную сеть». Когда это предложение обрабатывается глубокой нейронной сетью, которая обычно токенизирует данные, разбивая их на отдельные слова, сеть может не уловить правильное значение. Например, предложение «Нейронная сеть создала некоторых людей» имеет совершенно другое значение. Это подчеркивает важность порядка слов в определении смысла предложения.

Теперь давайте углубимся в работу рекуррентной нейронной сети. Основным строительным блоком RNN является рекуррентная ячейка, которая часто реализуется с использованием ячейки долговременной кратковременной памяти (LSTM). Хотя существуют и другие варианты, такие как рекуррентная единица с закрытым входом (GRU), обычно используется ячейка LSTM. В RNN каждая ячейка принимает последовательные данные в качестве входных данных и выводит их на следующий уровень или следующую ячейку в рекуррентном слое.

Выход из клетки может быть направлен по-разному. Он может перейти на следующий уровень или в следующую ячейку однонаправленным или двунаправленным образом. В этом уроке мы сосредоточимся на базовой однонаправленной RNN. Чтобы проиллюстрировать это, представьте себе зеленую рамку, представляющую повторяющуюся ячейку. Данные из предыдущей ячейки поступают в текущую ячейку, которая выполняет такие операции, как забвение ненужной информации из предыдущего узла, включение новых входных данных и принятие решения о том, какую информацию выводить на следующий уровень или узел.

Чтобы лучше представить этот процесс, давайте рассмотрим конкретную ячейку в слое. Зеленое поле представляет текущую ячейку. Данные поступают из предыдущей ячейки, зацикливаются и поступают в ячейку LSTM. Внутри ячейки есть операции для забывания информации из предыдущего узла, включения новых входных данных и определения выходных данных, которые должны быть переданы следующему слою или узлу. Эти операции в совокупности позволяют ячейке LSTM сохранять важную информацию и передавать ее последующим уровням или узлам.

Реализация RNN может быть сложной, особенно при работе со скалярными значениями. Если вас интересует подробное объяснение того, как работают ячейки LSTM, я рекомендую ознакомиться с подробным руководством, в котором они подробно объясняются. Я включил ссылку на это руководство в текстовую версию руководства для вашего ознакомления.

Теперь давайте перейдем к созданию базовой рекуррентной нейронной сети. В этом руководстве мы начнем с простого примера с использованием набора данных M-NIST. В следующем уроке мы будем работать с более реалистичными данными временных рядов, уделяя особое внимание ценам на криптовалюту.

Для начала импортируем необходимые библиотеки. Мы будем импортировать TensorFlow как tf, модель Sequential из tensorflow.keras.models, слой Dense из tensorflow.keras.layers, а также ячейки Dropout и LSTM. Обратите внимание, что если вы используете версию TensorFlow для графического процессора, существует также оптимизированная ячейка LSTM, называемая ячейкой KU DNN LSTM. Однако в этом уроке мы будем придерживаться обычной ячейки LSTM. Если вы используете версию TensorFlow для ЦП, вычисления могут занять значительное время.

Далее нам нужно загрузить набор данных. В этом примере мы будем использовать набор данных M-NIST. Мы можем легко загрузить его с помощью функции tf.keras.datasets.mnist.load_data(), которая возвращает данные обучения и тестирования. Распаковываем данные в переменные: X_train, Y_train, X_test и Y_test.

Во-первых, давайте нормализуем входные данные, разделив значение каждого пикселя на 255. Это приведет к масштабированию значений пикселей в диапазоне от 0 до 1, что подходит для обучения нейронной сети. Мы можем добиться этого, разделив данные обучения и тестирования на 255.

X_train = X_train / 255.0 X_test = X_test / 255.0

Затем нам нужно преобразовать целевые метки в векторы с горячим кодированием. В наборе данных M-NIST метки представляют собой целые числа от 0 до 9, представляющие цифры. Горячее кодирование преобразует каждую метку в двоичный вектор длины 10, где индекс, соответствующий цифре, установлен в 1, а все остальные индексы установлены в 0. Мы можем использовать функцию to_categorical из tensorflow.keras.utils для выполнения одного -горячее кодирование.

from tensorflow.keras.utils import to_categorical

Y_train = to_categorical(Y_train, num_classes=10)
Y_test = to_categorical(Y_test, num_classes=10)


Теперь давайте определим архитектуру нашей рекуррентной нейронной сети. Мы будем использовать модель Sequential из tensorflow.keras.models и добавим к ней слои.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

model = Sequential()
model.add(LSTM(128, input_shape=(X_train.shape[1:]), activation='relu', return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))


В приведенном выше коде мы определяем модель Sequential и добавляем два слоя LSTM по 128 единиц в каждом. Параметр input_shape первого слоя LSTM устанавливается в форму одной выборки данных в обучающем наборе (X_train.shape[1:]). Мы также указываем функцию активации для слоев LSTM как «relu». Аргумент return_sequences=True на первом уровне LSTM гарантирует, что он возвращает выходную последовательность, необходимую для подключения к следующему уровню LSTM. Мы также добавляем слои Dropout с коэффициентом отсева 0,2 после каждого слоя LSTM, чтобы предотвратить переоснащение. Наконец, мы добавляем плотный слой с 10 единицами и функцией активации softmax, которая будет выводить вероятности 10 классов.

Теперь давайте скомпилируем модель, указав функцию потерь, оптимизатор и метрику оценки.

model. compile (loss= 'categorical_crossentropy' , optimizer= 'adam' , metrics=[ 'accuracy' ])

В этом примере мы используем категориальную кросс-энтропию в качестве функции потерь, которая подходит для задач классификации с несколькими классами. Мы используем оптимизатор Adam, популярный выбор для обучения нейронных сетей. Мы также указываем «точность» в качестве метрики оценки для отслеживания производительности модели во время обучения.

Наконец, давайте обучим модель, используя данные обучения, и оценим ее на данных тестирования.

model.fit(X_train, Y_train, batch_size= 32 , epochs= 10 , validation_data=(X_test, Y_test))

В функции подгонки мы предоставляем обучающие данные и метки (X_train и Y_train), указываем размер пакета и количество эпох для обучения, а также предоставляем тестовые данные и метки для проверки во время обучения (validation_data=(X_test, Y_test)) .

Вот и все! Теперь вы построили рекуррентную нейронную сеть, используя ячейки LSTM для набора данных M-NIST. Вы можете экспериментировать с различными архитектурами, гиперпараметрами и наборами данных для дальнейшего изучения возможностей RNN.

Recurrent Neural Networks (RNN) - Deep Learning w/ Python, TensorFlow & Keras p.7
Recurrent Neural Networks (RNN) - Deep Learning w/ Python, TensorFlow & Keras p.7
  • 2018.09.07
  • www.youtube.com
In this part we're going to be covering recurrent neural networks. The idea of a recurrent neural network is that sequences and order matters. For many opera...
 

RNN, предсказывающая криптовалюту - Глубокое обучение с Python, TensorFlow и Keras, часть 8



RNN, предсказывающая криптовалюту - Глубокое обучение с Python, TensorFlow и Keras, часть 8

Привет всем и добро пожаловать в еще одно обучающее видео по глубокому изучению Python. В этом и следующих видео мы обсудим, как применить рекуррентную нейронную сеть (RNN) к более реалистичному примеру работы с последовательными данными. В частности, мы будем работать с набором данных временных рядов, состоящим из цен и объемов криптовалют.

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

Цель этого руководства — использовать рекуррентную нейронную сеть для прогнозирования будущей цены криптовалюты на основе ее прошлой цены и объема. Мы сосредоточимся на четырех основных криптовалютах: Биткойн, Лайткойн, Эфириум и Биткойн Кэш. Идея состоит в том, чтобы взять данные о цене и объеме за последние 60 минут для каждой из этих криптовалют и использовать их в качестве входных данных для прогнозирования цены Litecoin, например, на три минуты вперед.

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

Работа с последовательными данными сопряжена с уникальными проблемами. Во-первых, нам нужно предварительно обработать данные и преобразовать их в последовательности, которые может обработать рекуррентная нейронная сеть. Кроме того, нам необходимо сбалансировать и нормализовать данные, учитывая, что цены и объемы разных криптовалют могут иметь разные масштабы. Масштабирование данных более сложное, чем в других областях, таких как данные изображения, где мы просто делим на 255.

Кроме того, оценка производительности модели с использованием данных вне выборки представляет собой другую проблему при работе с последовательными данными. Нам необходимо охватить несколько аспектов, включая подготовку данных, нормализацию и оценку.

Для начала я предоставил вам набор данных для загрузки. Ссылку на скачивание вы найдете в описании урока. После извлечения загруженного zip-файла вы найдете четыре файла, каждый из которых соответствует данным о цене и объеме одной криптовалюты.

Мы будем использовать библиотеку pandas в Python для чтения и управления набором данных. Если у вас не установлены панды, вы можете сделать это, запустив команду pip install pandas в терминале или в командной строке.

Далее мы прочитаем набор данных с помощью pandas и изучим данные. Мы сосредоточимся на столбцах «закрытия» цены и объема для каждой криптовалюты. Чтобы объединить данные из разных файлов, мы установим столбец «время» в качестве индекса для каждого кадра данных. Затем мы присоединимся к кадрам данных на основе их общего индекса.

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

В нашем случае мы сосредоточимся на прогнозировании будущей цены Litecoin (LTC) на основе данных за последние 60 минут и будем прогнозировать на три минуты вперед. Мы также определим правило классификации, где мы классифицируем прогноз как повышение или снижение цены на основе текущих и будущих цен.

Выполнив эти начальные шаги, мы теперь готовы к предварительной обработке данных, созданию последовательностей и обучению рекуррентной нейронной сети. Мы рассмотрим эти темы в следующих видео, так что следите за обновлениями.

Если вы хотите продолжить, обязательно загрузите набор данных и настройте необходимые библиотеки. Вы можете найти полный код и инструкции в текстовой версии учебника, которая доступна в описании.

Нам есть что покрыть, поэтому давайте классифицируем это как 1, что указывает на рост цен. В противном случае, если будущая цена ниже текущей, мы классифицируем ее как 0, что указывает на падение цены. Это простое правило, которое мы используем для классификации, но вы можете экспериментировать с другими правилами или даже использовать регрессию для прогнозирования фактического изменения цены.

Теперь давайте создадим целевой столбец в нашем основном DataFrame. Мы будем использовать функцию сдвига от панд, чтобы сдвинуть значения столбца «LTCUSD_close» на будущий период. Это даст нам будущие цены, которые мы сравним с текущими ценами, чтобы определить классификацию. Мы назначим результат новому столбцу под названием «цель».

main_df[ 'target' ] = main_df[ 'LTCUSD_close' ].shift(-future_period)

Поскольку мы сдвинули значения в отрицательную сторону, последние несколько строк столбца «цель» будут иметь значения NaN (не число), поскольку отсутствуют данные о будущих ценах. Мы удалим эти строки из DataFrame.

main_df.dropna(inplace= True )

Далее создадим входные последовательности. Мы пройдемся по DataFrame и создадим последовательности длины sequence_length, состоящие из предыдущих цен и объемов биткойнов, лайткойнов, эфириума и биткойн-кэш. Мы будем хранить эти последовательности в списке под названием «последовательности».

sequences = []
for i in range(len(main_df) - sequence_length + 1):
    sequence = main_df.iloc[i:i+sequence_length, 1:-1].values.flatten()
    sequences.append(sequence)


В приведенном выше коде main_df.iloc[i:i+sequence_length, 1:-1] выбирает строки и столбцы для последовательности, исключая первый (время) и последний (целевой) столбцы. Затем мы используем .values.flatten() для преобразования выбранных данных в одномерный массив.

Наконец, мы преобразуем последовательности и цели в пустые массивы для упрощения манипулирования и обучения.

import numpy as np

sequences = np.array(sequences)
targets = np.array(main_df['target'])


Теперь у нас есть входные последовательности и соответствующие цели, готовые для обучения рекуррентной нейронной сети. Мы можем приступить к построению и обучению модели с использованием таких библиотек, как TensorFlow или PyTorch.

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

Не забудьте импортировать необходимые библиотеки, обработать отсутствующие данные, предварительно обработать функции (нормализация, масштабирование и т. д.) и разделить данные на наборы для обучения и тестирования перед обучением модели.

Я надеюсь, что это поможет вам понять процесс работы с последовательными данными и применения рекуррентных нейронных сетей для прогнозирования будущих цен. Удачи в вашем проекте глубокого обучения!

Cryptocurrency-predicting RNN intro - Deep Learning w/ Python, TensorFlow and Keras p.8
Cryptocurrency-predicting RNN intro - Deep Learning w/ Python, TensorFlow and Keras p.8
  • 2018.09.15
  • www.youtube.com
Welcome to part 8 of the Deep Learning with Python, Keras, and Tensorflow series. In this tutorial, we're going to work on using a recurrent neural network t...
Причина обращения: