Серия вводных заметок по глубокому обучению (4)
Реализация регрессионного кода на основе tensorflow
Каждый понедельник, среду и пятницу встречаемся в 7:35.
Эта серия будет разделена на 8 частей. Сегодня четвертый. Теория всегда немного скучна, сегодня я реализую два простых кейса на основе TF framework и ознакомлюсь со всем процессом. В целом обучение нейронной сети делится на 3 этапа:
Определить структуру нейронной сети и результат прямого прохода
Определить функцию потерь и выбрать алгоритм оптимизации обратного распространения
Создайте сеанс (tf.Session) и итеративно запустите алгоритм оптимизации обратного распространения на обучающих данных.
Теперь возьмем два простых случая, аппроксимацию прямой линией и аппроксимацию регрессии, чтобы ознакомиться с 3 вышеуказанными шагами.
1. Подгонка прямых линий
Например, теперь мы используем y = k * x + b (где k, b — параметры), чтобы подобрать прямую линию y = 5 * x + 1 через несколько тренировок.
В соответствии с вышеуказанными 3 шагами сначала постройте линейную модель y = k * x + b, наша цель — приблизить параметры k, b к реальным значениям 5, 1 посредством обучения. Затем определите функцию потерь, здесь мы используем квадратичную функцию стоимости; выберите метод градиентного спуска для оптимизации. Наконец, в сеансе выполняется итеративная оптимизация (tf.Session). Конкретный код и комментарии выглядят следующим образом:
Текущие результаты следующие: после 100 раундов оптимизации обучения тренировочные значения параметров очень близки к реальным значениям.
2. Линейная регрессия
Проблема регрессии — это не то же самое, что проблема классификации.Классификация заключается в получении результата в виде метки, которая представляет категорию, например, проблема двух категорий, которая является дискретной и имеет ограниченное количество категорий. Регрессия непрерывна, подробности см. в следующем примере.
В этом примере мы используем y = x*x + шум, чтобы случайным образом сгенерировать 200 точек рассеяния, обучить нейронную сеть и подобрать более идеальный результат регрессии.
Как и в предыдущих 3 шагах, первый шаг — определить структуру сети и основную информацию.Эта часть кода создает промежуточный слой из 10 узлов, а затем напрямую подключает выход узла. Входной разброс должен использовать numpy для создания 200 точек разброса между интервалом (-0,5, 0,5) и добавления информации о шуме к выходным данным. детали следующим образом.
Выбранная здесь функция стоимости представляет собой квадратичную функцию стоимости, а алгоритм оптимизации также представляет собой метод градиентного спуска. Затем выполните соответствующее обучение и выведите результаты в виде графиков. код показывает, как показано ниже:
Запуск кода дает следующие результаты.
Два случая в этой статье относительно просты, и основная цель — использовать два простых примера, чтобы ознакомиться с основными этапами обучения общей сети Бога. Наконец, если вы считаете, что эта серия хороша, не забудьте отсканировать код, чтобы следовать!
Прошлые рекомендации:
Приветствуем вашу пересылку и обмен
▲ Отсканируйте QR-код, чтобы подписаться на нас
Персональный WeChat: python_jiang