Как научиться пользоваться ноутбуком с нуля
описание работы и основных компонентов, использование Windows 8 и 10
Современный человек, несмотря на свою возрастающую техническую грамотность, всё дальше уходит от традиционных устройств — и всё непонятнее они ему становятся. Юзер сегодня сконцентрирован больше на мобильных платформах: таких, как смартфоны и планшеты, которые отбирают всё большее внимание и часть рынка. Поэтому руководства того, как пользоваться ноутбуком для начинающих, вытесняются похожими инструкциями, но уже для карманных устройств.
Отличия ноутбука, компьютера и смартфона
Для начала стоит разобраться в терминологии, так как многие называют компьютером монитор с клавиатурой, системный блок — процессором, а смартфон у некоторых — просто телефон. Только, пожалуй, ноутбуки из-за своей внешней узнаваемости называют неправильно реже всех. Отличия, как и правильные названия всех трёх, очень важны для того, чтобы человека, пытающегося вести разговор о них, понимали другие люди. Оказаться «чайником» перед сведущими в вопросе специалистами всегда неприятно. Итак:
- Персональный компьютер (ПК) — состоящая из нескольких частей вычислительная машина. Как правило, этим словом называют набор из системного блока, устройства вывода изображения — монитора и набора периферии для управления — мыши и клавиатуры. Имеет наибольшую производительность, энергопотребление и тепловыделение.
- Ноутбук — вычислительная машина, имеющая меньшую производительность. Все элементы ПК присутствуют и здесь, но в едином раскладном корпусе. Из-за меньших требований по питанию комплектуется батареей, способной напряжением до 21 вольт питать все компоненты без подключения к сети. Вследствие этого обладает мобильностью. Является, по сути, переходным звеном между ПК и смартфонами.
- Смартфоны и планшеты. Имеют самое низкое энергопотребление и тепловыделение, что сказывается и на производительности. Автономность работы самая высокая из всех. Задачи, выполняемые этим видом устройств, не выходят за пределы просмотра мультимедиа-контента, социальных сетей и простых игр.
Основные компоненты устройств
Разобравшись с наименованиями, можно перейти к основным составляющим современной техники . Из-за того, что во всех этих устройствах применяется архитектура фон Неймана, рассматривать эту тему можно абсолютно равнозначно для каждого из них. Современная вычислительная машина состоит из аппаратных и программных компонентов. Из аппаратных можно выделить такие:
- Центральный процессор (ЦП) — вычислительное ядро системы. Обрабатывает все операции, которые приходят ему из оперативной памяти и отправляет результаты вычислений туда же.
- Оперативная память или запоминающее устройство (ОЗУ) — временное хранилище информации, считанной из жёсткого диска внутренними инструкциями исполняемых файлов (программ). Обменивается данными с процессором, вычислений самостоятельно не производит.
- Постоянная память — хранилище, на котором содержатся программное обеспечение и пользовательские файлы. В современных вычислительных устройствах может быть механическим и твердотельным. В первом случае это винчестер или жёсткий диск, во втором — более быстрый SSD, не зависящий от скорости работы считывающей головки.
- Видеокарта — компьютер в компьютере, если это отдельная плата. Имеет свой процессор и размещённую на собственной плате память. Отвечает за построение и вывод изображения на экран. В интегрированном состоянии чаще всего является частью процессора, в более древних устройствах — одного из мостов материнской платы.
- Материнская плата (МП) — главная и самая крупная часть аппаратно-вычислительной составляющей. Имеет гнёзда для всех основных устройств, описанных ранее, и собственные наборы логики — мосты. В современных «материнках» мост всего один и называется словом «хаб». В более старых было два — северный и южный.
- Блок питания (БП) — устройство, подающее напряжение на все комплектующие. В выключенном состоянии компьютер или другое устройство, если не отсоединено от сети или не извлечена батарея, всё равно находится под так называемым дежурным напряжением. Именно оно позволяет всей системе реагировать на кнопку включения. У ноутбуков всегда выполнен в виде отдельного устройства, которое подключается в специальное гнездо.
Программных же компонентов выделяется всего три — базовая система ввода-вывода, операционная система и, собственно, программы, устанавливаемые на неё. Различия между ними будут в следующем:
- Базовая система ввода-вывода или BIOS — предназначена для настройки ПК, изменения параметров его компонентов и в некоторых случаях разгона. За сохранность всех параметров отвечает батарейка, которая находится на материнской плате.
- Операционная система — управляющее программное обеспечение, позволяющее использовать устройство. На ПК и ноутбуках чаще всего используются системы семейств Windows, Linux и MacOS. У смартфонов и планшетов — мобильные версии этих ОС, соответственно, Windows Mobile, Android и iOS.
- Программное обеспечение (ПО) — различные продукты, позволяющие использовать устройство для решения прикладных задач — отправки писем, просмотра веб-сайтов, фильмов, прослушивания музыки. На смартфонах, благодаря встроенным функциям вроде акселерометра, гироскопа и GPS-датчика, функциональность приложений намного шире.
Так выглядит в самом сокращённом виде самоучитель, позволяющий быстро разъяснить все основные сложности в терминологии вычислительных устройств и их различий. Учебник по компьютеру для начинающих обязательно должен содержать более подробную информацию, изложенную в понятном и доступном для неопытного человека виде.
Начало работы на ноутбуке
Обучение основным принципам работы с переносным персональным компьютером, ноутбуком, как правило, начинается с операционной системы. В зависимости от того, какая ОС будет на нём установлена, пользователь будет иметь разный начальный функционал. К примеру, на Виндоус 8 или 10 он увидит плиточные приложения, загружаемые из Магазина в меню Пуск. На Linux, в зависимости от дистрибутива — определённый набор бесплатных программ, позволяющих создавать документы, аналогичные тем, которые появляются в Microsoft Office, рисовать и просматривать медиаконтент.
Любое описание Windows 8 и 10 начинается с их главной особенности — живых плиток приложений. Их уникальность заключается в том, что пользователь может, регулируя отображаемый размер плитки, получать основную информацию из приложения, не заходя в него. На мобильных системах Android и iOS такую функцию выполняют так называемые виджеты.
Например, приложение погоды, развёрнутое в плитку большого или среднего размера, может отображать метеоусловия для выбранного вручную или определённого GPS-модулем ноутбука города. Чем больше плитка, тем на большее количество дней вперёд может выдаваться прогноз. Кроме того, специальная анимация периодически сменяет данные на несколько суток более подробным отчётом о состоянии погоды сейчас — выводится температура, погодные условия, атмосферное давление и влажность воздуха.
Мессенджер Скайп, установленный не как традиционная программа, а в виде универсального Windows-приложения, способен на своей плитке показывать количество пропущенных сообщений и от кого они.
При этом, если контакту присвоен аватар — уникальная картинка, то он будет выводиться через периодически повторяющуюся анимацию.
Установка программ на Windows 8 и 10
Две последних ОС от Майкрософта очень похожи как по своему внешнему виду, так и по способу работы с программным обеспечением. Дело в том, что в них существует два основных пути получения нужных приложений для работы:
- Через встроенный магазин, который в последних версиях называется Microsoft Store. Здесь предлагается несколько видов приложений — бесплатные, с подпиской и платные. Игры, общие для Windows 10 и Xbox One, тоже можно купить прямо в этом магазине. Они поддерживают облачные сохранения и единые достижения, что позволяет начать на приставке с того места, где человек закончил играть на ПК — и наоборот.
- Путём инсталляции вручную. Таких программ намного больше, их называют классическими Windows-приложениями. Некоторые из них представлены и в Магазине, но установить их в один клик, точно так же, как и плиточные, не удастся. Переход на их страницу в большинстве случаев перенаправляет пользователя в браузер на страницу загрузки с сайта производителя.
Несмотря на все усилия Майкрософт, направленные на популяризацию разработки программ на платформе UWP — Universal Windows Platform, далеко не все разработчики соглашаются на неё переходить. Большинство продолжает работать над традиционными версиями своих программных продуктов. Причиной этому могут быть как относительно низкая производительность плиточных вариантов привычных программ, так и очень малая популярность мобильных устройств, поддерживающих платформу.
Доля ОС Windows 10 Mobile на рынке смартфонов, за последние несколько лет постоянно уменьшаясь, достигла показателя менее, чем в один процент.
Особенности использования сенсорных экранов
Современные ноутбуки нередко комплектуются дисплеями, поддерживающими управление касанием пальцев. Это позволяет ускорить некоторые процессы ввода информации и потребления контента. Например, вертикальная и горизонтальная прокрутка, приближение и отдаление смотрятся намного естественнее на сенсорных экранах, чем при использовании мыши или тачпада.
Если в конфигурации присутствует такой экран, работать с Виндовс 8 на ноутбуке как с планшетом лучше всего. Конечно, есть более современная «десятка», но в ней режим управления касанием претерпел некоторые изменения и перестал быть настолько же удобным, как на предыдущей ОС.
Все различия кроются в меню Пуск. В «восьмёрке» оно разворачивается сразу на весь экран, что позволяет пользоваться сенсором мгновенно. В «десятке» же компания предпочла симбиоз между двумя предыдущими ОС — 7 и 8. В результате само меню, содержащее плиточные приложения, открывается не в полноэкранном формате. Для переключения в режим планшета нужно сначала открыть центр уведомлений, нажать кнопку «Режим планшета» и только тогда перейти к полноценному сенсорному управлению.
Может быть так, что такой кнопки в центре уведомлений нет. Добавляется она туда так:
- Открывается меню «Параметры» — шестерёнка над кнопкой выключения в меню Пуск.
- Выбирается категория «Система», а в ней — «Уведомления и действия».
- Здесь нужно щёлкнуть ссылку «Добавить/удалить быстрые действия».
- В перечне доступных отключённых кнопок найти «Режим планшета» и установить переключатель во включённое состояние.
После этого можно смело открывать центр уведомлений, кнопка там уже появилась. При нажатии на неё все закреплённые на панели задач ярлыки пропадают, меню Пуск разворачивается на весь экран, а на самой панели появляются кнопки управления приложениями.
Они могут быть знакомы пользователям смартфонов Lumia. «Назад» сворачивает текущее полноэкранное приложение и переходит к предыдущему, «Поиск» открывает строку, в которой можно искать не только то, что сохранено на компьютере, но и что-нибудь из интернета, например, результаты спортивных состязаний или последние новости. Здесь же, если она доступна в регионе, находится голосовая помощница Cortana.
Управление настройками режима планшета находится в той же категории «Уведомления и действия». Здесь можно выбрать масштабируемость и задать автоматическое включение этого режима, если экран отделён от док-станции.
Последняя опция доступна только для устройств-трансформеров, позволяющих либо отстегнуть экран от клавиатуры, либо повернуть его на 180 градусов и сложить, как планшет.
Originally posted 2018-04-17 10:39:54.
Train Inception с пользовательскими изображениями на CPU | by SAGAR SHARMA
Пока ваш компьютер обучается работе с новым набором данных о цветах, позвольте мне разбить команду и объяснить, что мы только что сделали.
Всю команду можно разделить на 4 части
Вызвать / запустить retrain.py сценарий.
python scripts / retrain.py
Создайте новый файл графика в папке tf_files (после завершения обучения).
--output_graph = tf_files / retrained_graph.pb
Создайте новый файл ярлыка в папке tf_files (после завершения обучения) .
--output_labels = tf_files / retrained_labels.txt
Укажите на каталог набора данных цветов.
--image_dir = tf_files / flower_photos
Примечание. Вы можете добавить / изменить аргументы в приведенной выше команде
Изменить модель, отличную от Inception-v3 « Mobilenet Models »
--architecture mobilenet_1.0_224
Tensorboard
--summaries_dir = tf_files / training_summaries / $ {напишите здесь архитектуру}
Изменение каталога узких мест
--bottleneck_dir = tf_files--how_many_training_steps = 500Изменение узких мест
4. Протестируйте только что обученную модель
Чтобы протестировать модель, просто загрузите любое изображение и вставьте его в «tenorflow-for-poets-2», затем введите (где image.png - это имя файла).
скрипты python / label_image.py --image image.png
Но вы можете получить сообщение об ошибке.
Для устранения этой ошибки откройте файл label_image.py в папке сценариев.
Перейдите к строке 74 и измените значения или перейдите по этой ссылке.
Изменение:
input_height = 224
input_width = 224
input_mean = 128
input_std = 128
input_layer = "input"
Кому:
input_height = 299
input_width = 299
input_mean = 0
input_std_std = = "Mul"
Теперь, когда мы внесли изменения, давайте сделаем это для других цветов.
Дейзи
.Как стать программистом: 8 шагов к созданию приложения с нуля
Введение
«Как лучше всего научиться программировать?»
«Как стать программистом»
«Как создать приложение»
Это общие вопросы, которые каждый день задают новички, которые хотят научиться программировать. Несомненно, вы уже погуглили что-то в этом роде и прочитали достаточно статей / ответов до такой степени, что вам надоели «стандартные» советы.
Если у вас нет, или если вы почему-то думаете, что у меня есть что-то новое, и все равно хотите это услышать (я не знаю), вот короткий и почти бессмысленный ответ (я дам ему SEO-ориентированный клик - название приманки: «3 шага к тому, чтобы стать программистом»):
Шаг 1. Выберите язык
Шаг 2: Изучите язык
Шаг 3: Собирайте материал и продолжайте учиться
Эй, не бросайся в меня. Как бы я ни хотел сказать, что существует универсальный метод обучения программированию, на самом деле его нет.(Позвольте мне добавить Шаг 0: признаю, что все учатся по-разному).
Бесчисленные более подробные ответы на шаги 1 и 2 уже существуют в Интернете, но общий ответ на первый шаг - изучить Python или Ruby в качестве своего первого языка (не слишком зацикливайтесь на языке, вы никогда не получите началось). Если вам нужны учебные ресурсы, мы подготовили несколько руководств, которые вы можете проверить:
Некоторые из вас дойдут до этого момента:
Если у вас есть момент, когда вы превратились в заблудшую овцу, не волнуйтесь, потому что вы не одиноки.
Практически каждый раз, когда вы спрашиваете: «Как мне стать программистом?», Разработчики говорят вам создавать что-то, потому что создание вещей - это то, как вы можете улучшить как программист, и это лучший способ учиться и так далее.
Но как создать собственное приложение?
Вы всегда можете следовать существующим руководствам о том, как создать клон Twitter / Pinterest / Instagram / и т. Д. На любом языке и технологиях, которые вы используете, но имейте в виду, что авторы этих руководств фактически сделали большую часть работы за вас, и все, что вы делаете, это понимаете код и их логику.
В этой статье сделана попытка предоставить вам схему, которой вы можете следовать при создании своего собственного приложения с нуля.
Предварительные требования
Большинству приложений потребуется база данных, поэтому, если вы собираетесь создавать собственное приложение самостоятельно (например, интерфейсную и внутреннюю части), вам, вероятно, придется знать язык запросов к базе данных (обычно SQL). Если только вы не создаете что-то, что не требует взаимодействия с базой данных, например, Flappy Bird.
Более того, если вы хотите создать веб-приложение, вам необходимо знать некоторые базовые навыки DevOps, чтобы иметь возможность настроить среду / сервер разработки и иметь возможность запускать приложение.
Если вы хотите стать только интерфейсным веб-разработчиком, вы можете отточить свои навыки HTML, CSS и JavaScript в Codepen или JSfiddle. Если вы знаете только JavaScript и не хотите изучать другой язык, вы можете попробовать Node.js, поскольку это платформа JavaScript для внутренней разработки (вы также можете использовать MongoDB в качестве базы данных, поскольку она также основана на JavaScript).
В противном случае вам также следует знать один из следующих языков (и обычно веб-фреймворк), если вы собираетесь создать полное веб-приложение:
- Рубин
- Python
- PHP
- Ява
- Перейти
- C #
Если вы хотите создавать игры, вы можете рассмотреть возможность изучения Lua, хотя C # также является очень хорошим выбором благодаря движку Unity 3D и его огромному сообществу.Что касается разработки собственных мобильных приложений, вам необходимо знать Swift / Objective-C для разработки под iOS и Java для разработки под Android.
Без лишних слов, давайте перейдем к созданию приложения с нуля.
Шаг 0: Разберитесь в себе
Прежде всего, создайте то, что вам нравится. Интерес - лучший способ сохранить мотивацию, поэтому спросите себя, что вас волнует или чем вы любите заниматься.
Например:
- Какие приложения вам больше всего нравятся?
- Без каких приложений вы не можете жить?
- Вы любите играть в игры?
- Вам нравится конструировать вещи?
- и т. Д.
Определите свои интересы, чтобы работать над тем, что вам нравится. Таким образом, вы с меньшей вероятностью сдадитесь на полпути.
Шаг 1. Выберите идею
Теперь, когда вы, надеюсь, разобрались, пора выбрать идею для воплощения. Простой старт .
Да… даже если вы думаете о создании игры, прямо сейчас вам не следует думать о создании следующего CounterStrike, а вместо этого вам следует думать о том, как создавать игры, столь же простые, как печально известная Flappy Bird.Эй, не смотри свысока на Flappy Bird - это была сенсация, которая заставила людей во всем мире открыть для себя своего внутреннего мазохиста. Но я отвлекся.
Итак, исходя из ваших интересов, придумайте простое приложение, которое будет делать что-нибудь полезное. Не имеет значения, существует ли приложение уже (на самом деле, оно может помочь вам, если подобные проекты уже существуют).
Вот несколько советов, которые помогут вам получить вдохновение:
- Если вам нравится готовить, возможно, вы захотите создать приложение, в котором люди будут демонстрировать свои домашние рецепты.
- Если вы всегда хотели знать, как работает Twitter, попробуйте создать суперпростой клон Twitter.
- Если вы забывчивый человек, который полагается на менеджеров задач, попробуйте создать их самостоятельно.
- Если вы пристрастились к League of Legends, вы можете попробовать использовать Riot API и создать сайт, который сможет получать и отображать информацию об игре.
- Если вам нравится играть в карточные игры, попробуйте собрать простую (например, Блэк Джек).
- Если вы сидите на диете, попробуйте создать приложение, которое будет регистрировать количество потребляемых вами калорий.
И так далее, и так далее. Вот список идей для проектов, если вам нужно больше вдохновения.
Когда у вас есть направление, запишите в одно предложение цель и, если применимо, наиболее важных целевых пользователей для этого приложения.
Например: приложение для усыновления домашних животных для людей, которые забирают бездомных животных.
Шаг 2: Определите основные функции
Подумайте, что ваше приложение должно уметь делать, и перечислите их.Если вы в конечном итоге перечисляете кучу вещей, присмотритесь и спросите себя, ДЕЙСТВИТЕЛЬНО ли этому приложению требуется, например, вход в Facebook для работы? Неужели для работы ДЕЙСТВИТЕЛЬНО нужно загружать данные в какое-то облако?
Здорово иметь проект мечты с потрясающими характеристиками, но сейчас дело не в том, чтобы создавать что-то, укомплектованное множеством интересных функций. Имейте в виду, что ни одно приложение никогда не бывает полным, и все начинается просто.
Никогда не пытайтесь создать универсальное приложение .Не ходи туда. Я видел, как это происходило даже в профессиональной среде, и в результате было много боли и мало прогресса.
Если у вас нет железной воли или если вы действительно не любите задач, вы будете разочарованы и разочарованы, если ваш первый проект будет слишком сложным. Вы новичок ... Дело сейчас в том, чтобы повеселиться. Веселье - самый эффективный способ учиться.
Итак, взгляните на список созданных вами функций, и, если он слишком длинный, начните вычеркивать функции, без которых ваше приложение может работать.
Помните, это ваша версия 1, и вы должны просто упростить ее. Сосредоточьтесь на вещах, которые позволят приложению выполнять все, что от него требуется, - все остальное можно оставить для другого проекта.
Для образца основной список функций для клона Reddit:
- пользователи могут создать учетную запись
- пользователей могут восстановить утерянные пароли
- пользователей могут менять свои пароли
- пользователей могут размещать новые ссылки
- пользователей могут комментировать ссылки
- пользователей могут голосовать за / против ссылки
- пользователей имеют профиль, показывающий их историю / активность
Перечисленные выше функции являются основными функциями, на которых вам следует сосредоточиться в первую очередь.Другие функции, такие как:
- пользователей могут поделиться в социальных сетях
- пользователей могут удалять комментарии
- Пользователи могут редактировать комментарии
- пользователей могут удалить свою учетную запись
Являются вторичными и могут быть сохранены для версии 1.x - работайте с ними только после того, как вы действительно сможете запустить версию 1.0
Шаг 3. Нарисуйте свое приложение
Лицензия CC
Нет ничего быстрее ручки и бумаги. К настоящему времени у вас должно быть довольно четкое представление о том, что должно делать ваше приложение, поэтому нарисуйте каркас пользовательского интерфейса вашего приложения (пользовательского интерфейса).Где должны быть расположены кнопки, для чего они нужны и так далее.
Сделайте заметки и поясните, как приложение должно работать. Вы все еще находитесь в стадии мозгового штурма, поэтому меняйте что-то, пока вы не будете чем-то удовлетворены.
Помните, все просто . Если вы сократили список на шаге 2, придерживайтесь только перечисленных в нем функций набросков - не увлекайтесь. Если ничего не можешь с собой поделать, нарисуй 2 версии: базовую и финальную в своих снах.
В общем, это не окончательный вид, а скорее всего лишь шаг, который поможет вам лучше понять свое приложение.
Шаг 4. Планирование пользовательского интерфейса вашего приложения
Хорошо. У вас есть хорошее представление о том, как будет выглядеть ваше приложение, что должен делать каждый элемент и как пользователи могут взаимодействовать с вашим приложением. Пришло время разобраться в пользовательском интерфейсе вашего приложения. Это означает, как пользователь должен использовать ваше приложение от начала до конца. Запишите каждый шаг, который им нужно сделать, и каждый сценарий, с которым они могут столкнуться.Постарайтесь рассмотреть все варианты использования.
(лицензия CC)
Включите в блок-схему все действия, которые может выполнять пользователь. Например, если ваше приложение требует от пользователей входа в систему, как им создать учетную запись? Что делать, если пользователи забыли свой пароль? Что, если они ввели неправильный пароль? Что должен делать пользователь в каждом интерфейсе (добавить новый элемент списка> сохранить; изменить> сохранить / удалить)? И так далее. Быстрее всего это делается с помощью ручки и бумаги.
Опять же, поскольку ваше приложение должно быть довольно простым, ваша диаграмма не должна быть слишком массивной.
Шаг 5. Проектирование базы данных
Хорошо! После того, как вы спланировали все возможные сценарии, взгляните на них, чтобы определить, какие данные вам необходимо сохранить. Например, если ваше приложение требует, чтобы пользователи создавали учетную запись, вам нужно будет отслеживать такие вещи, как имя пользователя, идентификатор пользователя, адрес электронной почты пользователя, пароль, подтверждена ли электронная почта пользователя, а также когда учетная запись была создана. как каждый раз, когда пользователь входит в ваше приложение.
Если вы создаете клон Твиттера, вам необходимо знать идентификатор твита, его содержание, дату публикации / ретвита твита, количество ретвитов и количество звездочек.Вам также нужно будет вести учет ретвитов и звездочек пользователей.
Вы можете нарисовать диаграмму ERM (модель сущности-отношения), чтобы отобразить взаимосвязь данных.
Пример схемы Entity-Relationship Diagram сайта выбора курса Лицензия CC
Кроме того, если у вас есть запланированные какие-либо будущие функции, самое время запланировать их в вашей базе данных. Вот хорошая статья, на которую стоит обратить внимание при разработке базы данных.
Продвинутый
Если приложение, которое вы планируете, будет взаимодействовать с сервером (например,грамм. если вы создаете полнофункциональное веб-приложение) или если ваше приложение будет взаимодействовать с API (например, вы пытаетесь получить информацию от Yahoo! Weather), то, вероятно, будет хорошей идеей нарисовать диаграмму последовательности, чтобы вы получить лучшее представление о том, как должны работать процессы.
Из Википедии
Шаг 6. Каркасы UX
Хорошо, у вас запланирована внутренняя часть. А теперь пора спланировать интерфейс.
Надеюсь, вы все еще взволнованы, как и миньоны выше.Вы знаете, что вам нужно - теперь вы гораздо лучше представляете, как должно выглядеть ваше приложение.
Лицензия CC
Поскольку люди в основном визуальные существа, вам будет лучше понять, что вам следует делать, если у вас будет визуальное представление каждого представления, которое вы будете кодировать. Однако, если вы похожи на меня и ваш рисунок настолько беспорядочный, что вы с трудом можете понять непонятный кусок ... кашля шедевра ... который вы создали, естественно, неразумно продолжать этот шаг, злоупотребляя своими плохими художественными умственными способностями.
К счастью, в Интернете существует множество инструментов для создания каркасов и макетов, которые помогут вам спланировать свой UX / UI поток (например, Gliffy, Mockflow, Framebox, Wireframe.cc, Invis
.Как использовать резюме поиска по сетке в sklearn, Keras, XGBoost, LightGBM в Python
Grid Search с перекрестной проверкой (GridSearchCV) - это грубая сила для поиска лучших гиперпараметров для определенного набора данных и модели. Почему бы не автоматизировать это настолько, насколько это возможно? Оставайтесь до конца для RandomizedSearchCV в дополнение к реализации GridSearchCV.
Для некоторых это, возможно, тривиальная задача, но очень важная - поэтому стоит показать, как можно выполнить поиск по гиперпараметрам для всех популярных пакетов.
В этом посте я собираюсь рассмотреть фрагмент кода для классификации и регрессии, варьирующийся между Keras, XGBoost, LightGBM и Scikit-Learn.
Существует GitHub с кнопкой colab , где вы можете мгновенно запустить тот же код, который я использовал в этом посте.
-
Что такое GridSearchCV?
-
Настройка: подготовленный набор данных
-
Запуск GridSearchCV (Keras, sklearn, XGBoost и LightGBM)
-
Запуск вложенной перекрестной проверки с поиском по сетке
-
Запуск RandomSearchCV
-
Дополнительная литература (книги и справочники)
Что такое GridSearchCV?
Одной строкой: перекрестная проверка - это процесс разделения одного и того же набора данных на K-разделы, и для каждого разделения мы ищем всю сетку гиперпараметров для алгоритма методом грубой силы, пробуя каждую комбинацию.
Обратите внимание, что я имею в виду перекрестную проверку K-Fold (CV), хотя есть и другие методы выполнения CV.
Итеративным образом мы переключаем наборы данных для тестирования и обучения в разные подмножества из полного набора данных. Обычно мы разделяем полный набор данных так, чтобы в каждом тестовом сгибе было 10% ($ K = 10 $) или 20% ($ K = 5 $) от полного набора данных.

Grid Search: Из этого изображения перекрестной проверки мы делаем следующее для поиска по сетке; для каждой итерации протестируйте все возможные комбинации гиперпараметров, подбирая и оценивая каждую комбинацию отдельно.
Настройка: подготовленный набор данных
Нам нужен подготовленный набор данных, чтобы иметь возможность запускать поиск по сетке по всем различным параметрам, которые мы хотим попробовать. Я предполагаю, что вы уже подготовили набор данных, иначе я покажу краткую версию его подготовки, а затем перейду к поиску по сетке.
В этом посте я собираюсь запустить модели на трех разных наборах данных; MNIST, Цены на жилье в Бостоне и рак груди. Единственная цель - сразу перейти от подготовки набора данных к его запуску с помощью GridSearchCV.Но нам нужно будет провести небольшую подготовку, которую мы сведем к минимуму.
Для набора данных MNIST мы нормализуем изображения, делим их на значения кода RGB и быстро кодируем наши выходные классы
# LOAD DATA (x_train, y_train), (x_test, y_test) = mnist.load_data () # ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА def preprocess_mnist (x_train, y_train, x_test, y_test): # Нормализация всех изображений размером 28x28 пикселей x_train = x_train.reshape (x_train.shape [0], 28, 28, 1) x_test = x_test.reshape (x_test.shape [0], 28, 28, 1) input_shape = (28, 28, 1) # Плавающие значения для деления x_train = x_train.astype ('float32') x_test = x_test.astype ('float32') # Нормализация кодов RGB путем деления их на максимальное значение RGB x_train / = 255 x_test / = 255 # Категориальные значения y y_train = to_categorical (y_train) y_test = to_categorical (y_test) вернуть x_train, y_train, x_test, y_test, input_shape X_train, y_train, X_test, y_test, input_shape = preprocess_mnist (x_train, y_train, x_test, y_test)
Для набора данных о ценах на жилье мы делаем еще меньше предварительной обработки.На самом деле мы просто удаляем несколько столбцов с пропущенными значениями, удаляем остальные строки с пропущенными значениями и сразу же кодируем столбцы.
бостон = load_boston () X = boston.data y = boston.target X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,2, random_state = 42)
Для последнего набора данных, рака груди, мы не выполняем никакой предварительной обработки, за исключением разделения набора данных для обучения и тестирования на обучающие и тестовые разделы
# Загрузить набор данных рака груди рак = load_breast_cancer () X = рак.данные y = Cance.target X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,2, random_state = 42)
Запуск GridSearchCV
Следующим шагом является фактический запуск поиска по сетке с перекрестной проверкой. Как это работает? Что ж, я сделал эту функцию, которую довольно легко взять и использовать. Вы можете ввести свой различный раздел обучения и тестирования X_train_data
, X_test_data
, y_train_data
, y_test_data
. Вы также можете ввести свою модель
, из какой бы библиотеки она ни была; может быть Keras, sklearn, XGBoost или LightGBM.Вам нужно будет указать, какие параметры, в param_grid
, вы хотите «перебрать», чтобы найти лучшие гиперпараметры. Важно также указать, какие оценки вы хотите использовать; есть один для установки на модель scoring_fit
. Наконец, вы можете установить другие параметры, например, сколько K-разделов вы хотите и какие оценки из sklearn.metrics вы хотите использовать. Мы используем n_jobs = -1
в качестве стандарта, поскольку это означает, что мы используем все доступные ядра ЦП для обучения нашей модели.
def algorithm_pipeline (X_train_data, X_test_data, y_train_data, y_test_data, модель, param_grid, cv = 10, scoring_fit = 'neg_mean_squared_error', do_probabilities = False): gs = GridSearchCV ( оценка = модель, param_grid = param_grid, cv = cv, n_jobs = -1, scoring = scoring_fit, подробный = 2 ) fit_model = gs.fit (X_train_data, y_train_data) если do_probabilities: пред = подобранная_модель.pred_proba (X_test_data) еще: пред = подобранная_модель.predict (X_test_data) вернуть установленную_модель, пред
Обратите внимание, что мы могли бы заменить GridSearchCV
на RandomSearchCV
, если вы хотите использовать это вместо этого.
Keras
Во-первых, мы определяем архитектуру нейронной сети, и, поскольку она предназначена для набора данных MNIST, состоящего из изображений, мы определяем его как своего рода сверточную нейронную сеть (CNN).
# Подготовка модели нейронной сети def build_cnn (активация = 'relu', dropout_rate = 0.2, optimizer = 'Adam'): model = Последовательный () model.add (Conv2D (32, размер_ядра = (3, 3), активация = активация, input_shape = input_shape)) model.add (Conv2D (64, (3, 3), активация = активация)) model.add (MaxPooling2D (размер_пул = (2, 2))) model.add (Dropout (dropout_rate)) model.add (Flatten ()) model.add (Плотный (128, активация = активация)) model.add (Dropout (dropout_rate)) model.add (Плотный (10, активация = 'softmax')) модель.компилировать ( loss = 'category_crossentropy', optimizer = оптимизатор, метрики = ['точность'] ) модель возврата
Затем мы просто определяем параметры и модель для ввода в algorithm_pipeline
; мы запускаем классификацию этого набора данных, так как мы пытаемся предсказать, к какому классу можно отнести данное изображение. Обратите внимание, что я закомментировал некоторые параметры, потому что обучение займет много времени, но вы всегда можете повозиться с тем, какие параметры вам нужны.Вы даже можете добавить pool_size
или kernel_size
.
param_grid = { 'эпохи': [1,2,3], 'размер_пакета': [128] # 'эпох': [100,150,200], # 'batch_size': [32, 128], # 'optimizer': ['Adam', 'Nadam'], # 'dropout_rate': [0,2, 0,3], # 'активация': ['relu', 'elu'] } model = KerasClassifier (build_fn = build_cnn, подробный = 0) модель, pred = algorithm_pipeline (X_train, X_test, y_train, y_test, model, param_grid, cv = 5, scoring_fit = 'neg_log_loss') печать (модель.лучший результат_) печать (model.best_params_)
Из этого GridSearchCV мы получаем лучший результат и лучшие параметры:
-0.04399333562212302 {'batch_size': 128, 'эпохи': 3}
Исправление ошибки для оценки с помощью Keras
Я столкнулся с этой проблемой при кодировании решения, пытающегося использовать точность для модели Keras в GridSearchCV - вы можете задаться вопросом, почему 'neg_log_loss'
использовался в качестве метода оценки?
Решение использовать что-то еще, кроме отрицательной потери журнала, состоит в том, чтобы удалить часть предварительной обработки набора данных MNIST; то есть УДАЛИТЬ ту часть, где мы делаем выходные переменные категориальными
# Категориальные значения y y_train = to_categorical (y_train) y_test = to_categorical (y_test)
Конечно, мы могли бы работать с другими методами подсчета очков, верно? Да, это действительно так (см. Блокнот).Это лучший результат и лучшие параметры:
0,9858 {'batch_size': 128, 'эпохи': 3}
XGBoost
Затем мы определяем параметры для набора данных о ценах на жилье в Бостоне. Здесь задача - регресс, для чего я решил использовать XGBoost. Я также выбрал оценку с помощью среднеквадратичной ошибки (RMSE).
модель = xgb.XGBRegressor () param_grid = { 'n_estimators': [400, 700, 1000], 'colsample_bytree': [0,7, 0,8], 'max_depth': [15,20,25], 'reg_alpha': [1.1, 1.2, 1.3], 'reg_lambda': [1.1, 1.2, 1.3], 'подвыборка': [0,7, 0,8, 0,9] } модель, pred = algorithm_pipeline (X_train, X_test, y_train, y_test, model, param_grid, cv = 5) # Среднеквадратичная ошибка печать (np.sqrt (-model.best_score_)) печать (model.best_params_)
Наилучшая оценка и параметры для набора данных о ценах на жилье, найденные с помощью GridSearchCV, составили
3,48483892733 {'colsample_bytree': 0.8, 'max_depth': 20, 'n_estimators': 400, 'reg_alpha': 1.2, 'reg_lambda': 1,3, 'подвыборка': 0,8}
LightGBM
Следующей задачей был LightGBM для классификации рака груди. Выбранная метрика - точность.
модель = lgb.LGBMClassifier () param_grid = { 'n_estimators': [400, 700, 1000], 'colsample_bytree': [0,7, 0,8], 'max_depth': [15,20,25], 'num_leaves': [50, 100, 200], 'reg_alpha': [1.1, 1.2, 1.3], 'reg_lambda': [1.1, 1.2, 1.3], 'min_split_gain': [0,3, 0,4], 'подвыборка': [0,7, 0.8, 0.9], 'subsample_freq': [20] } модель, pred = algorithm_pipeline (X_train, X_test, y_train, y_test, model, param_grid, cv = 5, scoring_fit = 'precision') печать (модель.best_score_) печать (model.best_params_)
Лучшие параметры и лучший результат GridSearchCV в наборе данных рака груди с LightGBM составил
0,9736263736263736 {'colsample_bytree': 0,7, 'max_depth': 15, 'min_split_gain': 0,3, 'n_estimators': 400, 'num_leaves': 50, 'reg_alpha': 1.3, 'reg_lambda': 1.1, 'subsample': 0.7, 'subsample_freq': 20}
Sklearn
Чтобы показать, что вы действительно можете запускать GridSearchCV с одним из собственных оценщиков sklearn, я попробовал RandomForestClassifier в том же наборе данных, что и LightGBM.
модель = RandomForestClassifier () param_grid = { 'n_estimators': [400, 700, 1000], 'max_depth': [15,20,25], 'max_leaf_nodes': [50, 100, 200] } модель, pred = algorithm_pipeline (X_train, X_test, y_train, y_test, model, param_grid, cv = 5, scoring_fit = 'precision') печать (модель.лучший результат_) печать (model.best_params_)
И действительно результат оказался хуже, чем у LightGBM, как и ожидалось:
0,9648351648351648 {'max_depth': 25, 'max_leaf_nodes': 50, 'n_estimators': 1000}
Запуск вложенной перекрестной проверки с поиском по сетке
Заинтересованы в запуске беспристрастного GridSearchCV? Приветствую вас на вложенной перекрестной проверке; где вы получаете оптимальный компромисс смещения и дисперсии и, согласно теории, максимально объективную оценку.
Я бы посоветовал вам проверить этот репозиторий на GitHub.
Я написал об этом:
Код Python для вложенной перекрестной проверки
Код для вложенной перекрестной проверки в машинном обучении - объективная оценка истинной ошибки. Что такое вложенная перекрестная проверка, и почему и когда ее использовать.

Я встроил примеры ниже, и вы можете установить пакет с помощью команды pip:
pip install nested-cv
RandomSearchCV
Нам не нужно ограничиваться GridSearchCV - почему бы не реализовать RandomSearchCV тоже, если вам так больше нравится.Это реализовано в нижней части ноутбука, доступном здесь.
Мы можем указать другой параметр для конвейера search_mode
, который позволяет нам указать, какой алгоритм поиска мы хотим использовать в нашем конвейере. Но мы также вводим еще один параметр под названием n_iterations
, поскольку нам нужно предоставить такой параметр как для класса RandomSearchCV, но не для GridSearchCV.
Мы можем установить значения по умолчанию для обоих этих параметров, и я действительно так и сделал. search_mode = 'GridSearchCV'
и n_iterations = 0
- это значения по умолчанию, поэтому мы по умолчанию используем GridSearchCV, где количество итераций не используется.
Вот код, и обратите внимание, что мы только что сделали простой оператор if для того, какой класс поиска использовать:
из sklearn.model_selection import RandomizedSearchCV def search_pipeline (X_train_data, X_test_data, y_train_data, y_test_data, модель, param_grid, cv = 10, scoring_fit = 'neg_mean_squared_error', do_probabilities = False, search_mode = 'GridSearchCV', n_iterations = 0): Fitted_model = Нет если (search_mode == 'GridSearchCV'): gs = GridSearchCV ( оценка = модель, param_grid = param_grid, cv = cv, n_jobs = -1, scoring = scoring_fit, подробный = 2 ) fit_model = gs.подходят (X_train_data, y_train_data) elif (search_mode == 'RandomizedSearchCV'): rs = RandomizedSearchCV ( оценка = модель, param_distributions = param_grid, cv = cv, n_iter = n_iterations, n_jobs = -1, scoring = scoring_fit, подробный = 2 ) fit_model = rs.fit (X_train_data, y_train_data) если (подобранная_модель! = Нет): если do_probabilities: пред = подобранная_модель.predict_proba (X_test_data) еще: пред = подобранная_модель.предсказать (X_test_data) вернуть установленную_модель, пред
Запустив это для набора данных рака груди, он дает следующие результаты, которые почти такие же, как результат GridSearchCV (который получил оценку 0,9648)
0,9626373626373627 {'n_estimators': 1000, 'max_leaf_nodes': 100, 'max_depth': 25}
Дополнительная литература
Ниже перечислены наиболее рекомендуемые книги (со ссылкой на Amazon) по порядку. Первый особенно хорош для практики машинного обучения на Python, поскольку он охватывает большую часть scikit-learn и TensorFlow.
Книги с Amazon
- Практическое машинное обучение, лучшая практическая книга!
- Краткая книга со всем материалом, необходимым для начала работы; отличная ссылка!
- Айдемическая и теоретическая книга для глубокого обучения
- Изучение машинного обучения с помощью теории вероятностей. Рекомендуется, если у вас есть математический фон.
Ссылки на классы из этого поста
Я рекомендую прочитать документацию для каждой модели, которую вы собираетесь использовать с этим конвейером GridSearchCV - это решит проблемы, с которыми вы столкнетесь при переходе на другие алгоритмы.В частности, вот документация по алгоритмам, которые я использовал в этих сообщениях:
.Практическое глубокое обучение для кодеров
Если вы готовы погрузиться прямо сейчас, вот как начать. Если вы хотите узнать больше об этом курсе, прочтите следующие разделы, а затем вернитесь сюда.
Чтобы просмотреть видео, щелкните раздел Lessons на боковой панели навигации. У всех уроков есть записи с возможностью поиска; нажмите «Поиск в стенограмме» на верхней правой панели, чтобы найти слово или фразу, а затем нажмите ее, чтобы перейти прямо к видео в то время, которое указано в стенограмме.Все видео снабжены субтитрами, а также переведены на китайский (简体 中文) и испанский; во время просмотра видео нажмите кнопку «CC», чтобы включить и выключить их, и кнопку настройки, чтобы изменить язык.
Каждое видео охватывает главу из книги. Каждая глава книги полностью доступна в виде интерактивной записной книжки Jupyter. Jupyter Notebook - самый популярный инструмент для анализа данных на Python, и не зря. Он мощный, гибкий и простой в использовании. Мы думаем, вам это понравится! Поскольку самое важное для изучения глубокого обучения - это написание кода и эксперименты, важно, чтобы у вас была отличная платформа для экспериментов с кодом.
Для начала мы рекомендуем использовать Jupyter Server с одной из рекомендуемых онлайн-платформ (щелкните ссылки, чтобы узнать, как использовать их для курса):
- Colab: популярный бесплатный сервис от Google. Google довольно сильно изменил платформу ноутбука, поэтому сочетания клавиш другие, и не все работает (например, большая часть главы 2 не работает, потому что Colab не поддерживает создание графических интерфейсов веб-приложений)
- Gradient: В отличие от Colab, это «настоящий» Jupyter Notebook, поэтому все в курсе работает.Он также предоставляет место для хранения ваших ноутбуков и моделей. Однако иногда бесплатные серверы перегружаются, и в таких случаях невозможно подключиться.
Если вас интересует опыт работы с полноценным сервером Linux, вы можете рассмотреть DataCrunch.io (очень новый сервис, поэтому мы не знаем, насколько он хорош, не требует настройки, очень хорошее соотношение цены и чрезвычайно быстрые графические процессоры), или Google Cloud (чрезвычайно популярный сервис, очень надежный, но самые быстрые графические процессоры намного дороже).Мы настоятельно рекомендуем использовать одну из рекомендуемых онлайн-платформ для запуска ноутбуков, а , а не , использовать свой собственный компьютер, если у вас нет большого опыта в администрировании системы Linux и работе с драйверами графического процессора, CUDA и т. Д.
Если вам нужна помощь, то на forum.fast.ai есть прекрасное онлайн-сообщество, готовое помочь. Прежде чем задавать вопрос на форумах, внимательно поищите, чтобы увидеть, был ли ранее на ваш вопрос ответ. (Система форумов не позволит вам публиковать сообщения, пока вы не потратите несколько минут на сайт, читая существующие темы.) Одна вещь, которую многие студенты находят сложной, - это зарегистрироваться в Bing API для выполнения задачи загрузки изображения в уроке 2; вот полезное сообщение на форуме, в котором объясняется, как получить ключ API Bing, который понадобится для загрузки изображений.
.