В предыдущей части 1 этого руководства я немного познакомился с TensorFlow и Scikit Flow и показал, как построить простую модель логистической регрессии на наборе данных Titanic.
В этой части давайте углубимся и попробуем многослойные полносвязные нейронные сети, напишем свою собственную модель для подключения к Scikit Flow и опробуем сверточные сети.
Конечно, нет особого смысла в еще одной структуре линейной / логистической регрессии. Идея, лежащая в основе TensorFlow (и многих других фреймворков глубокого обучения), состоит в том, чтобы иметь возможность соединять дифференцируемые части модели вместе и оптимизировать их с учетом той же функции затрат (или потерь).
Scikit Flow уже реализует удобную оболочку вокруг TensorFlow API для создания многих уровней полностью подключенных единиц, поэтому просто начать с глубокой модели, просто заменив классификатор в нашей предыдущей модели на TensorFlowDNNClassifier и указав скрытые единицы для каждого уровня:
Это создаст 3 уровня полностью связанных модулей с 10, 20 и 10 скрытыми модулями соответственно с активациями выпрямленных линейных модулей по умолчанию . Мы сможем настроить эту настройку в следующей части.
Обратите внимание на параметры модели - я привел некоторые из них для примера, но скорость обучения, оптимизатор и количество шагов, которые вы обучаете модели, могут иметь большое значение. Обычно в реальных сценариях нужно запускать поиск по гиперпараметрам, чтобы найти оптимальный набор, который повышает стоимость или точность набора для проверки.
Я не особо много играл с гиперпараметрами, но предыдущая модель DNN показала худшую точность, чем логистическая регрессия. Мы можем изучить, связано ли это с переоборудованием или недоподбором, в отдельном посте.
Для этого примера я хочу показать, как переключиться на пользовательскую модель, где у вас будет больше контроля.
Эта модель очень похожа на предыдущую, но мы изменили функцию активации с выпрямленной линейной единицы на гиперболический тангенс (выпрямленная линейная единица и гиперболический тангенс - самые популярные функции активации для нейронных сетей).
Как видите, создать собственную модель так же просто, как написать функцию, которая принимает входные значения X и y (которые являются тензорами) и возвращает два тензора: прогнозы и потери. Здесь вы можете начать изучение API-интерфейсов TensorFlow для создания частей подграфа.
Что это за учебник по TensorFlow без примера распознавания цифр? :)
Это просто пример того, как вы можете попробовать разные типы наборов данных и моделей, не ограничиваясь только функциями с плавающими числами. Здесь мы берем набор данных цифр и пишем собственную модель:
Мы создали функцию conv_model , которая с учетом тензора X и y запускает двумерный сверточный слой с самым простым максимальным объединением - только с максимальным. Результат передается в виде функций в skflow.models.logistic_regression, который обрабатывает классификацию по необходимому количеству классов, присоединяя softmax к классам и вычисляя перекрестную потерю энтропии.
Теперь легко изменить этот код, чтобы добавить столько слоев, сколько вы хотите (некоторые из современных моделей распознавания изображений включают более сотни уровней сверток, максимального объединения, исключения и т. Д.).
Часть 3 расширяет модель Титаника набора данных с обработкой категориальные переменные.
С момента написания этой статьи я основал NEAR Protocol. Узнайте больше о нашем путешествии .
PS. Спасибо Владу Фролову за помощь с пропущенными статьями и указание ошибок в черновике :)
Написано Шашатой Савмией и Харвиром Сингхом С появлением больших нейронных сетей и постоянно растущими технологическими достижениями, которые доводят существующие методы до их абсолютного предела, основное внимание уделяется созданию универсального инструмента, который нацелен на все. Тем не менее, для большинства задач не потребуются невероятно интенсивные глубокие сети, но все же что-то более универсальное, чем базовые математические модели.
Это ярко-золотое утро в холмистой местности на западе, когда первые лучи солнечного света освещают инеистую траву на равнинах. Стадо безмятежных ангусских коров, угольно-черных и массивных, вырисовывается на фоне восхода солнца, когда они идут по проторенной тропе к месту, которое они все хорошо знают; барная стойка.
Недавно я был в Linkedin, крупнейшей в мире профессиональной социальной сети, и нашел посты дизайнеров-фрилансеров, за которыми я следил и которые привлекли мое внимание. Все они публиковали фотографии из самолетов, на пляже со своими ноутбуками, из бассейнов и офисов с потрясающими видами.
Если мы хотим продолжать процветать на этой планете, нам придется вести опасные разговоры. Те, которые бросают вызов тому, что мы сделали, что мы делаем и что мы в настоящее время собираемся продолжать делать (или планируем делать).
Зуд в моей руке распространился, когда я торговалась с местным книгопродавцом за еще одну книгу. Эта книга, как и остальные, которые я купил недавно, займет свое место в моей стопке «Для чтения» (TBR); и тем не менее, я купил его.