«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Построение базовой сверточной нейронной сети (CNN) на Python

Построение базовой сверточной нейронной сети (CNN) на Python

Опубликовано 1 ноября 2024 г.
Просматривать:512

Building a Basic Convolutional Neural Network (CNN) in Python

Сверточные нейронные сети (CNN) — это мощные инструменты для задач обработки и распознавания изображений. Они предназначены для автоматического и адаптивного изучения пространственных иерархий объектов посредством обратного распространения ошибки. Давайте углубимся в создание базовой CNN с использованием Python и TensorFlow/Keras.

? Предварительные условия

Прежде чем начать, убедитесь, что у вас установлены следующие библиотеки:

pip install tensorflow numpy matplotlib

?️ Шаг 1. Импортируйте необходимые библиотеки.

Начните с импорта основных библиотек:

import tensorflow as tf
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt

?️ Шаг 2. Загрузите и предварительно обработайте набор данных.

В этом примере мы будем использовать набор данных CIFAR-10, который состоит из 60 000 цветных изображений размером 32x32 в 10 классах.

# Load the CIFAR-10 dataset
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()

# Normalize the pixel values to be between 0 and 1
x_train, x_test = x_train / 255.0, x_test / 255.0

? Шаг 3. Постройте модель CNN

Теперь давайте построим модель CNN. Эта модель будет включать в себя ключевые слои: сверточные, пуловые и плотные слои.

model = models.Sequential()

# First Convolutional Layer
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))

# Second Convolutional Layer
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))

# Third Convolutional Layer
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

# Flatten the output and add Dense layers
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))

? Шаг 4. Скомпилируйте модель

Компиляция модели включает в себя указание оптимизатора, функции потерь и показателей для мониторинга во время обучения.

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

? Шаг 5. Обучение модели

Обучите модель CNN на обучающих данных за несколько эпох.

history = model.fit(x_train, y_train, epochs=10, 
                    validation_data=(x_test, y_test))

? Шаг 6: Оцените модель

После обучения оцените модель на тестовых данных, чтобы увидеть, насколько хорошо она работает.

test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f'\nTest accuracy: {test_acc}')

?️ Шаг 7: Визуализируйте результаты обучения

Наконец, давайте визуализируем точность и потери в разные эпохи обучения.

plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0, 1])
plt.legend(loc='lower right')
plt.show()

? Заключение

Эта базовая модель CNN служит отличной отправной точкой для решения задач классификации изображений. Поняв и изменив эту модель, вы сможете экспериментировать с различными архитектурами и методами, чтобы повысить производительность вашей модели. Продолжайте исследовать и настраивать слои, чтобы создавать еще более мощные нейронные сети! ?


Этот код разработан таким образом, чтобы его было легко отслеживать и модифицировать, что делает его подходящим для новичков и тех, кто хочет начать работу с CNN в Python.

Ссылка на блог об архитектуре CNN: https://dev.to/abhinowww/demystifying-cnn-neural-network-layers-a-deep-dive-into-ai-architecture-12d2

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/abhinowww/building-a-basic-convolutional-neural-network-cnn-in-python-3bab?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected] удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3