Нейросети. Основы. Дэвид Рид
Чтение книги онлайн.
Читать онлайн книгу Нейросети. Основы - Дэвид Рид страница 6
![Нейросети. Основы - Дэвид Рид Нейросети. Основы - Дэвид Рид](/cover_pre1408011.jpg)
5. Корректировка и оптимизация: Модель может быть доработана и оптимизирована с использованием различных техник, таких как кросс-валидация, настройка гиперпараметров и выбор лучших признаков.
Супервайзинговое обучение широко используется в задачах классификации (например, распознавание изображений, анализ текста) и регрессии (например, прогнозирование цен на жильё).
Практический пример супервайзингового обучения
Задача: Классификация изображений кошек и собак с использованием библиотеки scikit-learn и нейронной сети Keras.
– Сбор данных
Для этого примера мы будем использовать датасет изображений кошек и собак, который можно найти на платформе Kaggle. Датасет содержит тысячи изображений кошек и собак, размеченных соответствующими метками.
– Разделение данных
Разделим данные на обучающий и тестовый наборы. Обычно используется соотношение 80:20, где 80% данных идут на обучение, а 20% на тестирование.
– Обучение модели
Для обучения модели мы будем использовать простой CNN (сверточную нейронную сеть), подходящую для классификации изображений.
– Оценка модели
Оценим точность модели на тестовом наборе данных.
– Корректировка и оптимизация
Настроим гиперпараметры модели, проведем кросс-валидацию и выберем лучшие признаки для улучшения производительности.
```python
# Импортируем необходимые библиотеки
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
# Сбор данных и предварительная обработка
# Для примера используем ImageDataGenerator для загрузки изображений из папок
train_datagen = ImageDataGenerator(rescale=1./255, validation_split=0.2)
train_generator = train_datagen.flow_from_directory(
'data/train', # Путь к папке с изображениями
target_size=(150, 150),
batch_size=32,
class_mode='binary',
subset='training')
validation_generator = train_datagen.flow_from_directory(
'data/train',
target_size=(150, 150),
batch_size=32,
class_mode='binary',
subset='validation')
# Разделение данных уже происходит внутри ImageDataGenerator с использованием параметра validation_split
# Создание модели
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),
MaxPooling2D(2, 2),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D(2, 2),
Conv2D(128, (3, 3), activation='relu'),
MaxPooling2D(2, 2),
Conv2D(128, (3, 3), activation='relu'),
MaxPooling2D(2, 2),
Flatten(),
Dense(512, activation='relu'),
Dropout(0.5),
Dense(1, activation='sigmoid')