Читать книгу Нейросети. Основы онлайн
```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')
])
# Компиляция модели
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# Обучение модели
history = model.fit(
train_generator,
steps_per_epoch=train_generator.samples // train_generator.batch_size,
validation_data=validation_generator,
validation_steps=validation_generator.samples // validation_generator.batch_size,
epochs=10
)
# Оценка модели
loss, accuracy = model.evaluate(validation_generator)
print(f'Test Accuracy: {accuracy*100:.2f}%')
# Корректировка и оптимизация
# В данном примере можно попробовать изменить архитектуру модели, количество эпох,
# использование других оптимизаторов или функций активации для улучшения производительности.