Читать книгу 120 практических задач онлайн
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
# Добавление полносвязных слоев
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10))
# Шаг 4: Компиляция и обучение модели
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
history = model.fit(train_images, train_labels, epochs=10,
validation_data=(test_images, test_labels))
# Шаг 5: Оценка модели
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'\nТочность на тестовых данных: {test_acc}')
# Визуализация процесса обучения
plt.plot(history.history['accuracy'], label='Точность на обучающем наборе')
plt.plot(history.history['val_accuracy'], label='Точность на валидационном наборе')
plt.xlabel('Эпоха')
plt.ylabel('Точность')
plt.legend(loc='lower right')
plt.show()
```
Пояснение
1. Импорт библиотек: Загружаются необходимые библиотеки TensorFlow и Keras для построения и обучения модели.
2. Подготовка данных: Загрузка набора данных CIFAR-10, который содержит 60,000 цветных изображений размером 32x32, разделенных на 10 классов. Данные нормализуются, чтобы ускорить обучение.
3. Построение модели: Модель создается как последовательная (Sequential). Добавляются несколько сверточных слоев, за которыми следуют слои подвыборки (Pooling) и полносвязные слои.
4. Компиляция и обучение: Модель компилируется с использованием оптимизатора Adam и функции потерь Sparse Categorical Crossentropy. Затем модель обучается на тренировочных данных.
5. Оценка и тестирование: После обучения модель оценивается на тестовых данных, и визуализируется точность на тренировочном и валидационном наборах данных.
Эта структура сети может быть расширена и усложнена в зависимости от задачи и доступных данных.
Построение модели
Создание последовательной модели (Sequential)
Для создания сложной сверточной нейронной сети (CNN) мы будем использовать последовательную модель `Sequential` из библиотеки Keras. Этот тип модели позволяет добавлять слои один за другим, что упрощает процесс построения и настройки сети.