"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python으로 기본 CNN(Convolutional Neural Network) 구축

Python으로 기본 CNN(Convolutional Neural Network) 구축

2024-11-01에 게시됨
검색:792

Building a Basic Convolutional Neural Network (CNN) in Python

CNN(컨볼루셔널 신경망)은 이미지 처리 및 인식 작업을 위한 강력한 도구입니다. 역전파를 통해 기능의 공간 계층을 자동으로 적응적으로 학습하도록 설계되었습니다. Python과 TensorFlow/Keras를 사용하여 기본 CNN을 구축하는 방법을 살펴보겠습니다.

? 전제 조건

시작하기 전에 다음 라이브러리가 설치되어 있는지 확인하세요.

pip install tensorflow numpy matplotlib

?️ 1단계: 필요한 라이브러리 가져오기

필수 라이브러리를 가져오는 것부터 시작하세요.

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

?️ 2단계: 데이터 세트 로드 및 전처리

이 예에서는 10개 클래스의 60,000개의 32x32 컬러 이미지로 구성된 CIFAR-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 모델을 구성해 보겠습니다. 이 모델에는 Convolutional, Pooling 및 Dense 레이어와 같은 주요 레이어가 포함됩니다.

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 모델은 이미지 분류 작업을 처리하기 위한 훌륭한 출발점 역할을 합니다. 이 모델을 이해하고 수정하면 다양한 아키텍처와 기술을 실험하여 모델 성능을 향상할 수 있습니다. 더욱 강력한 신경망을 구축하려면 계속해서 레이어를 탐색하고 조정하세요! ?


이 코드는 쉽게 따라하고 수정할 수 있도록 설계되어 초보자와 Python에서 CNN을 시작하려는 사람들에게 적합합니다.

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