Сверточные нейронные сети (CNN) — это мощные инструменты для задач обработки и распознавания изображений. Они предназначены для автоматического и адаптивного изучения пространственных иерархий объектов посредством обратного распространения ошибки. Давайте углубимся в создание базовой CNN с использованием Python и TensorFlow/Keras.
Прежде чем начать, убедитесь, что у вас установлены следующие библиотеки:
pip install tensorflow numpy matplotlib
Начните с импорта основных библиотек:
import tensorflow as tf from tensorflow.keras import layers, models import matplotlib.pyplot as plt
В этом примере мы будем использовать набор данных 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
Теперь давайте построим модель 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'))
Компиляция модели включает в себя указание оптимизатора, функции потерь и показателей для мониторинга во время обучения.
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Обучите модель CNN на обучающих данных за несколько эпох.
history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))
После обучения оцените модель на тестовых данных, чтобы увидеть, насколько хорошо она работает.
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) print(f'\nTest accuracy: {test_acc}')
Наконец, давайте визуализируем точность и потери в разные эпохи обучения.
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
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3