Создание нейросетей на Python для начинающих
Просмотров: 51944 Спасибо за проявленный интерес. Все уроки данного курса Вы можете посмотреть прямо здесь.
Скачать исходники проекта можно по этой ссылке.
Урок 1. Введение к курсу
Урок 2. Введение в машинное обучение
Урок 3. Установка необходимого ПО
Упражнения:
- Установите Python.
- Установите PyCharm.
- Создайте простой проект и убедитесь, что он работает. После этого, при желании, удалите его.
Урок 4. Создание простейшей нейросети
Упражнения:
- Напишите по памяти код из этого урока.
- Измените входные данные и вес нейросети в коде. Запустите программу с новыми значениями и опишите, как это повлияло на выходные данные. Объясните, почему это произошло с точки зрения работы нейронной сети.
- Создайте список входных данных (например, inputs = [150, 160, 170, 180, 190]) и используйте цикл for для вычисления выходных данных нейросети для каждого значения в списке. Распечатайте выходные данные для каждого входного значения.
- Модифицируйте функцию neural_network так, чтобы она принимала два входных параметра: inp и bias. Результат будет задан как inp * weight + bias. Запустите функцию с новыми значениями inp, weight и bias. Как изменится выходная переменная? Почему?
Урок 5. Создание нейросети с несколькими входами
Упражнения:
- Напишите по памяти код из этого урока.
- Измените функцию neural_network так, чтобы она возвращала не только предсказание (prediction), но и весь список промежуточных значений (произведение каждого элемента входных данных на соответствующий вес). Выведите обе переменные (prediction и список промежуточных значений) на экран.
Урок 6. Создание нейросети с несколькими выходами
Упражнения:
- Напишите по памяти код из этого урока.
- Измените веса нейросети в коде и определите, при каких значениях весов выходные данные для каждого элемента становятся больше 0.5. Решите это методом проб и ошибок, меняя веса с небольшими шагами.
- Напишите код с циклом, где значение веса будет увеличиваться до тех пор, пока выходное значение меньше 0.5. Как только один выход стал больше 0.5, то изменение его веса останавливается. Как только второй выход стал больше 0.5, то изменение его веса также останавливается, а цикл завершается. Выведите получившиеся веса.
Урок 7. Создание нейросети с несколькими входами и выходами
Упражнения:
- Напишите по памяти код из этого урока.
- Добавьте еще один набор весов (weights_4 = [0.4, 0.2, 0.1]) и добавьте его в список weights. Запустите функцию с этим новым набором весов. Как это повлияло на предсказанные значения? Объясните, почему.
- Измените веса нейросети таким образом, чтобы выходные данные для первого и второго нейрона стали равными. Используйте метод проб и ошибок. Входные значения менять нельзя.
- Выполните предыдущее задание, но с помощью цикла. После цикла выведите получившиеся веса.
Урок 8. Добавление скрытого слоя
Упражнения:
- Напишите по памяти код из этого урока.
- Измените веса нейросети так, чтобы предсказанные значения для второго слоя (prediction_h) стали больше 5. Напишите код, который это сделает. Выведите получившиеся веса. Само собой, входные данные менять нельзя.
Урок 9. Библиотека NumPy
Упражнения:
- Создайте одномерный массива NumPy из 5 элементов.
- Умножьте созданный массив на 2 и выведите результат на экран.
- Создайте два двумерных массива NumPy размером (3, 3) со случайными значениями.
- Перемножьте два созданных двумерных массива и выведите результат на экран.
- Создайте одномерный массив NumPy из 10 случайных целых чисел. Примечание: для этого Вам понадобится изучить функцию np.random.randint().
- Используйте индексацию и срезы, чтобы вывести только чётные элементы из массива, созданного в предыдущем задании.
- Выведите среднее значение, стандартное отклонение, максимальное и минимальное значение для созданного ранее массива из 10 случайных целых чисел.
Урок 10. Упрощение кода с помощью NumPy
Упражнения:
- Напишите по памяти код из этого урока.
- Добавьте еще один скрытый слой к нейросети. Создайте третий набор весов weights_h_3 = [0.6, 0.2] и weights_out_3 = [0.7, 0.4]. Добавьте его в переменные weights_h и weights_out. Измените функцию neural_network так, чтобы она работала с этим третьим слоем.
- Замените списки с фиксированными весами на массивы numpy, причём с генерацией случайных значений в них.
Урок 11. Оценка ошибки
Упражнения:
- Напишите по памяти код из этого урока.
- Измените один из весов нейросети так, чтобы ошибка (error) была меньше 0.001. Решите это методом проб и ошибок.
- Решите предыдущее задание, но уже с использованием кода и цикла в нём, последовательно меняя вес на заданный шаг на каждой итерации. Выполнять цикл надо до тех пор, пока ошибка не станет меньше 0.001. Выведите получившиеся веса.
Урок 12. Градиентный спуск
Упражнения:
- Напишите по памяти код из этого урока.
- Измените начальное значение веса и входных данных. Запустите код несколько раз с разными начальными значениями и выведите результаты. Как начальные значения влияют на обучение нейросети?
- Измените значение true_prediction на другое значение (например, 0.8 или 0.5) и запустите код снова. Как изменение желаемого выходного значения влияет на обучение нейросети? Объясните результаты.
- Измените количество итераций в цикле (например, увеличьте до 100). Как изменение числа итераций влияет на точность предсказаний? Попробуйте найти оптимальное количество итераций для данной задачи.
Урок 13. Решение проблемы с расхождением
Упражнения:
- Напишите по памяти код из этого урока.
- Измените значение learning_rate на 0.01, 0.1 и 0.0001. Как это влияет на скорость обучения? Попробуйте найти оптимальное значение learning_rate, которое обеспечивает быстрое и точное обучение.
- Увеличьте количество итераций цикла (например, до 100). Как это влияет на точность предсказаний? Сколько итераций необходимо для достижения близкой к идеальной точности предсказаний?
Урок 14. Градиентный спуск с несколькими входами
Упражнения:
- Напишите по памяти код из этого урока.
- Измените скорость обучения (learning_rate). Попробуйте более высокие или более низкие значения (например, 0.0001 или 0.001). Как это влияет на скорость сходимости и точность предсказания?
- Увеличьте количество итераций в цикле (например, до 1000). Как это влияет на точность предсказания? Когда нейросеть перестает улучшать предсказание?
Урок 15. Градиентный спуск с несколькими выходами
Упражнения:
- Напишите по памяти код из этого урока.
- Измените inp на другие значения (например, inp = 200). Как изменение входных данных влияет на процесс обучения? Какие значения inp делают обучение более сложным, а какие более простым?
Урок 16. Градиентный спуск с несколькими входами и несколькими выходами
Упражнения:
- Напишите по памяти код из этого урока.
- Измените true_predictions на другие значения (например, [[70, 90]] или [[30, 110]]). Запустите код и определите, как это влияет на обучение нейросети. Какие значения true_predictions делают обучение более сложным, а какие более простым?
Урок 17. Обучение на нескольких наборах данных
Упражнения:
- Напишите по памяти код из этого урока.
- Измените количество эпох с 500 на 100. Проанализируйте результат.
- Измените функцию get_error так, чтобы она возвращала не сумму квадратов ошибок, а среднеквадратичное отклонение (RMSE): np.sqrt(np.mean((true_value - prediction_value) ** 2)). Как это изменение влияет на обучение нейросети?
Урок 18. Создание нейросети, определяющей пол человека по весу и росту
Упражнения:
- Напишите по памяти код из этого урока.
- Измените скорость обучения (learning_rate). Попробуйте более высокие или более низкие значения (например, 0.000001 или 0.0001). Как это влияет на скорость сходимости и точность предсказания?
- Увеличьте или уменьшите количество итераций в цикле обучения (например, до 10000 или до 100). Как это влияет на точность предсказания и ошибку? Когда нейросеть перестает улучшать предсказания?
- Измените функцию вычисления ошибки, чтобы она возвращала среднеквадратичное отклонение (RMSE). Как это повлияло на скорость обучения нейросети?
- Напишите нейросеть, которая будет суммировать 2 числа. То есть на входе у неё будет 2 нейрона, например: [10, 5], [0, -5], [2, 6], а на выходе должен быть 1 нейрон. Для представленных входов, выходы будут: [15], [-5], [8] соответственно. Проверьте правильность работы нейросети, передав ей тестовые данные [12, 4] на вход, а потом [3, -8]. Примечание: регулируйте параметры нейросети до тех пор, пока она не будет выдавать результат для тестовых данных очень близкий к правильному (ошибка не должна быть больше 1%).
В благодарность за то, что Вы стали моим учеником, я предоставляю Вам 25%-ую скидку на мой флагманский Видеокурс "Создание нейросетей на Python"
Пройдя Видеокурс:
- Вы научитесь создавать многослойные архитектуры
- Вы узнаете, как работают фреймворки для нейросетей изнутри
- Вы научитесь правильно применять функции активации
- Вы научитесь анализировать и обрабатывать изображения
- Вы освоите NLP для обработки текста
- Вы научитесь использовать PyTorch и NumPy
- Вы научитесь сохранять и загружать модели
- Вы сможете создавать нейросети для решения своих задач
- Вы получите актуальную и востребованную профессию
- Вы повысите конкурентоспособность Вашего резюме
- Вы освоите ещё огромное количество деталей и нюансов
P.S. Узнать все подробности и посмотреть презентацию можно, пройдя по ссылке: узнать подробнее - данную страницу со скидкой не видят обычные посетители, а только Вы - мой дорогой Подписчик!
0

