Нейросети кажутся сложными, но лучший способ их понять — начать программировать. Мы подготовили подборку практических заданий, которые помогут перейти от теории к реальным проектам. Все примеры реализованы на Python с использованием библиотек TensorFlow/Keras и PyTorch.
1. Первая нейросеть: классификация рукописных цифр (MNIST)
Цель: Создать модель, которая распознаёт цифры от 0 до 9.
Инструменты: TensorFlow/Keras, датасет MNIST.
Шаги:
- Загрузите данные:
python
Copy
from tensorflow import keras (X_train, y_train), (X_test, y_test) = keras.datasets.mnist.load_data()
- Нормализуйте изображения (значения пикселей от 0 до 1).
- Постройте модель:
python
Copy
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
- Обучите модель:
python
Copy
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(X_train, y_train, epochs=5)
- Проверьте точность на тестовых данных.
Результат: Точность >97%.
2. Предсказание цен на дома: регрессия
Цель: Научить модель предсказывать стоимость недвижимости.
Инструменты: Boston Housing Dataset, PyTorch.
Шаги:
- Загрузите данные:
python
Copy
from sklearn.datasets import load_boston data = load_boston() X, y = data.data, data.target
- Нормализуйте признаки (StandardScaler).
- Создайте модель:
python
Copy
import torch.nn as nn
model = nn.Sequential(
nn.Linear(13, 64),
nn.ReLU(),
nn.Linear(64, 1)
)
- Обучите с MSE-лоссом и оптимизатором Adam.
- Оцените ошибку (RMSE).
Совет: Попробуйте добавить dropout-слои для борьбы с переобучением.
3. Генерация текста: RNN с LSTM
Цель: Создать модель, которая генерирует текст в стиле Шекспира.
Инструменты: TensorFlow, датасет Shakespeare.
Шаги:
- Загрузите текст и создайте словарь символов.
- Преобразуйте текст в последовательности:
python
Copy
import numpy as np
text = open('shakespeare.txt').read()
chars = sorted(set(text))
char_to_idx = {char: i for i, char in enumerate(chars)}
- Постройте модель:
python
Copy
model = keras.Sequential([
keras.layers.LSTM(256, input_shape=(seq_length, len(chars))),
keras.layers.Dense(len(chars), activation='softmax')
])
- Обучите на предсказании следующего символа.
- Генерируйте текст с температурой сэмплирования.
Результат: Модель пишет стихи в духе «Быть или не быть?».
4. Свёрточная сеть (CNN) для классификации кошек и собак
Цель: Научить модель отличать кошек от собак на фото.
Инструменты: TensorFlow, датасет Kaggle Cats vs Dogs.
Шаги:
- Загрузите и разделите изображения (25k фото).
- Используйте аугментацию данных (повороты, отражения).
- Постройте CNN:
python
Copy
model = keras.Sequential([
keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(150,150,3)),
keras.layers.MaxPooling2D(2,2),
keras.layers.Flatten(),
keras.layers.Dense(512, activation='relu'),
keras.layers.Dense(1, activation='sigmoid')
])
- Обучите с бинарной кросс-энтропией.
- Достигните точности >85% на валидации.
5. Детекция объектов: YOLO на практике
Цель: Настроить предобученную модель YOLO для обнаружения объектов на фото.
Инструменты: OpenCV, Darknet.
Шаги:
- Установите YOLO и загрузите веса (yolov3.weights).
- Загрузите изображение:
python
Copy
import cv2
img = cv2.imread('image.jpg')
- Запустите детекцию:
python
Copy
net = cv2.dnn.readNet('yolov3.weights', 'yolov3.cfg')
blob = cv2.dnn.blobFromImage(img, 1/255, (416,416), swapRB=True)
net.setInput(blob)
outputs = net.forward(net.getUnconnectedOutLayersNames())
- Визуализируйте bounding boxes.
Результат: Модель выделяет объекты с подписями (человек, машина, стул).
6. GAN: генерация лиц людей
Цель: Обучить GAN создавать реалистичные лица.
Инструменты: PyTorch, датасет CelebA.
Шаги:
- Загрузите датасет с изображениями лиц (202k фото).
- Постройте генератор и дискриминатор:
python
Copy
# Генератор
generator = nn.Sequential(
nn.Linear(100, 256),
nn.LeakyReLU(0.2),
nn.Linear(256, 784),
nn.Tanh()
)
# Дискриминатор
discriminator = nn.Sequential(
nn.Linear(784, 256),
nn.LeakyReLU(0.2),
nn.Linear(256, 1),
nn.Sigmoid()
)
- Обучайте в состязательной манере (minimax игра).
- Генерируйте новые лица из шума.
Советы для успешного обучения
- Начните с простого: Не беритесь сразу за трансформеры — освойте базовые архитектуры.
- Используйте Google Colab: Бесплатные GPU ускорят обучение.
- Анализируйте ошибки: Визуализируйте предсказания и confusion matrix.
- Экспериментируйте: Меняйте гиперпараметры (learning rate, batch size).
Заключение
Нейросети — это не магия, а инструмент, который требует практики. Выполняйте задания шаг за шагом, и через месяц вы сможете создавать собственные модели. Как говорил профессор Эндрю Ын: «Лучший способ научиться — сделать что-то своими руками и увидеть, как оно ломается. Тогда вы поймёте, как это работает».
P.S. Не бойтесь ошибок. Каждая неудача — это урок, который приближает вас к мастерству.
