>  기사  >  백엔드 개발  >  Python에서 분류를 위해 신경망을 사용하는 방법은 무엇입니까?

Python에서 분류를 위해 신경망을 사용하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-06-04 22:40:321905검색

대량의 데이터를 분류할 때 이 데이터를 수동으로 처리하는 것은 매우 시간이 많이 걸리고 어려운 작업입니다. 이 경우 분류를 위해 신경망을 사용하면 빠르고 쉽게 작업을 수행할 수 있습니다. Python에는 성숙하고 사용하기 쉬운 신경망 라이브러리가 많이 있으므로 좋은 선택입니다. 이 문서에서는 Python에서 분류를 위해 신경망을 사용하는 방법을 설명합니다.

  1. 신경망 및 분류

분류에 신경망을 사용하는 방법을 설명하기 전에 신경망의 개념을 간략하게 이해할 필요가 있습니다. 신경망은 대량의 입력 데이터와 출력 데이터 간의 관계를 기반으로 모델을 구축하여 알려지지 않은 데이터의 특정 속성을 예측하는 계산 모델입니다. 이 모델은 분류 문제에 매우 효과적이며 사진, 이메일, 음성과 같은 다양한 유형의 데이터를 분류하는 데 사용할 수 있습니다.

분류는 신경망의 주요 응용 분야 중 하나입니다. 분류 문제의 목적은 데이터를 다양한 범주로 분류하는 것입니다. 예를 들어, 이미지 인식에서 신경망은 다양한 이미지를 고양이, 개, 자동차 등 다양한 카테고리로 분류할 수 있습니다. 이 경우 신경망은 이미지를 입력 데이터로, 분류를 출력 데이터로 사용합니다. 분류는 일반적으로 지도 학습 방법을 사용하여 데이터를 여러 범주로 나누는 프로세스입니다.

  1. 신경망 라이브러리 설치

Python에는 TensorFlow, Keras, PyTorch 등과 같이 선택할 수 있는 많은 신경망 라이브러리가 있습니다. 이번 글에서는 구글 브레인팀이 개발한 오픈소스 인공지능 라이브러리인 텐서플로우(TensorFlow)를 사용하겠습니다. TensorFlow는 배우고 사용하기 쉬운 매우 인기 있는 프레임워크이며 수많은 머신러닝 프로젝트에서 사용됩니다.

TensorFlow를 설치하지 않은 경우 터미널이나 명령 프롬프트를 열고 다음 명령을 입력할 수 있습니다.

pip install tensorflow

설치가 완료된 후 Python 코드에서 TensorFlow 라이브러리를 사용할 수 있습니다.

  1. 데이터 준비

데이터 준비는 분류 작업에서 중요한 단계입니다. 데이터는 신경망이 이해할 수 있는 수치 형식으로 변환되어야 합니다. 여기서는 디지털 이미지로 구성된 매우 인기 있는 데이터세트 MNIST를 소개합니다. 각 이미지는 숫자를 나타냅니다. MNIST 데이터세트는 TensorFlow에서 사용할 수 있으며 다음 명령을 직접 사용하여 데이터를 로드할 수 있습니다:

from tensorflow.keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

이 명령은 MNIST 데이터 세트를 신경망을 훈련하는 데 사용되는 변수 x_train 및 y_train에 로드합니다. 테스트 데이터는 변수 x_test 및 y_test에 로드되어 신경망을 테스트하는 데 사용됩니다. x_train 및 x_test에는 숫자 이미지 데이터가 포함되고, y_train 및 y_test에는 숫자 이미지의 레이블이 포함됩니다.

다음으로 데이터세트를 살펴보고 자세히 알아보겠습니다.

print('x_train shape:', x_train.shape)

print('y_train shape:', y_train.shape)

print(' x_test 모양 :', x_test.shape)

print('y_test 모양:', y_test.shape)

출력에 다음 정보가 표시됩니다.

x_train 모양: (60000, 28, 28)

y_train 모양 : (60000,)

x_test 모양: (10000, 28, 28)

y_test 모양: (10000,)

이는 훈련 데이터 세트에 60000개의 디지털 이미지가 포함되어 있고 각 이미지가 28픽셀 x 28픽셀임을 보여줍니다. 테스트 데이터 세트에는 10,000개의 이미지가 있습니다.

  1. 신경망 모델

데이터를 준비한 후 신경망 모델을 선택해야 합니다. 두 개의 완전히 연결된 레이어(Dense)로 구성된 매우 간단한 신경망 모델을 선택하겠습니다. 첫 번째 완전 연결 계층에는 128개의 뉴런이 포함되고, 두 번째 완전 연결 계층에는 10개의 뉴런이 포함됩니다. 코드는 다음과 같습니다:

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Dense, Flatten

model = Sequential()

model.add(Flatten(input_shape=(28, 28) ))

model.add(Dense(128, 활성화='relu'))

model.add(Dense(10, 활성화='softmax'))

model.compile(optimizer='adam',

loss=' sparse_categorical_crossentropy',

metrics=['accuracy'])

여기서 먼저 Sequential 모델을 만든 다음 28x28 이미지 데이터를 1차원 배열로 병합하는 데 사용되는 Flatten 레이어를 추가합니다. 다음으로 우리는 128개의 뉴런으로 구성된 완전 연결 레이어를 추가하고 ReLU를 활성화 함수로 사용했습니다. 마지막으로 10개의 뉴런이 있는 완전 연결 레이어를 추가하고 Softmax 활성화 함수를 사용하여 각 숫자에 대한 확률 분포를 얻습니다. 모델은 adam 최적화 프로그램과 희소 범주형 교차 엔트로피 손실 함수를 사용하여 컴파일됩니다.

  1. 모델 훈련

데이터와 모델을 준비했으니 이제 훈련 데이터를 사용하여 모델을 훈련해야 합니다. 다음 명령을 사용하여 모델을 훈련할 수 있습니다.

history = model.fit(x_train, y_train, epochs=10, 유효성 검사_data=(x_test, y_test))

이 코드는 모델을 훈련하는 데 10개의 에포크(epoch)를 사용합니다. while 검증을 위해 테스트 세트를 사용하십시오. 학습이 완료된 후 다음 코드를 사용하여 모델을 평가할 수 있습니다.

test_loss, test_acc = model.evaluate(x_test, y_test)

print('Test Accuracy:', test_acc)

출력에서 확인할 수 있습니다. 세트의 테스트 정확도 지수.

  1. Prediction

모델을 훈련하고 평가한 후 모델을 사용하여 알려지지 않은 데이터를 예측할 수 있습니다. 다음 코드를 사용하여 이미지의 라벨을 예측할 수 있습니다:

import numpy as np

image_index = 7777 # Starting from 0

img = x_test[image_index]

img = np.expand_dims(img, axis=0 )

predictions = model.predict(img)

print(predictions)

print("Predicted label:", np.argmax(predictions))

출력에서 이미지가 다음과 같이 예측되었음을 알 수 있습니다. 숫자 2.

  1. 결론

이 기사에서는 Python에서 신경망을 사용하여 분류하는 방법을 소개했습니다. 우리는 TensorFlow를 사용하여 신경망 모델을 구축하고 훈련시켰으며, 테스트 및 예측을 위해 MNIST 데이터세트를 사용했습니다. 다양한 범주의 이미지 분류 작업에 이 모델을 사용할 수 있으며 필요에 따라 모델의 신경망 계층을 조정할 수 있습니다. 신경망을 활용한 분류는 대용량 데이터 분류를 쉽게 처리할 수 있는 매우 효과적인 방법으로, 모델 개발 및 분류 작업을 더 빠르게 수행할 수 있습니다.

위 내용은 Python에서 분류를 위해 신경망을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.