>  기사  >  백엔드 개발  >  Python의 필기 숫자 인식 예

Python의 필기 숫자 인식 예

WBOY
WBOY원래의
2023-06-11 10:13:362156검색

Python은 데이터 분석, 기계 학습, 이미지 처리 및 기타 분야에서 널리 사용되는 매우 강력한 프로그래밍 언어입니다. 머신러닝 분야에서 필기 숫자 인식은 매우 중요한 이슈로, 인증번호 인식, 자율주행, 음성인식 등 다양한 분야에 적용될 수 있습니다. 이번 글에서는 Python을 이용하여 필기 숫자 인식을 구현하는 방법을 소개하겠습니다.

  1. 데이터세트 소개

머신러닝에서는 데이터세트 선택이 매우 중요합니다. 필기 숫자 인식 문제를 해결하려면 레이블이 지정된 데이터세트가 필요합니다. 가장 일반적으로 사용되는 데이터 세트는 MNIST(Modified National Institute of Standards and Technology) 데이터 세트로, 총 60,000개의 훈련 이미지와 10,000개의 테스트 이미지가 포함되어 있습니다. 각 이미지는 28x28 픽셀 회색조 이미지입니다.

  1. 데이터세트 로드

MNIST 데이터세트를 사용하려면 Python 라이브러리를 통해 로드할 수 있습니다. 이 예에서는 Tensorflow의 Keras 라이브러리를 사용하여 MNIST 데이터세트를 로드합니다.

from keras.datasets import mnist

# 加载MNIST数据集
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

여기서 훈련 이미지와 라벨을 train_imagestrain_labels에 저장하고 테스트 이미지와 라벨을 test_images test_labels에 저장합니다. >. train_imagestrain_labels 中,将测试图像和标签存储在 test_imagestest_labels 中。

  1. 数据预处理

在机器学习中,我们通常需要对数据进行预处理,以提高模型的表现。对于MNIST数据集,我们需要将像素值转换为0到1之间的浮点数,并将28x28的图像转换为784维向量,以便我们可以将其输入到模型中。

# 数据预处理
train_images = train_images.reshape((60000, 28 * 28))
train_images = train_images.astype('float32') / 255

test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images.astype('float32') / 255
  1. 构建模型

在Keras中构建神经网络非常简单,我们只需要定义一个Sequential对象,然后添加层即可。对于这个手写数字识别问题,我们使用一个包含两个密集层的简单神经网络。

from keras import models
from keras import layers

network = models.Sequential()
network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))
network.add(layers.Dense(10, activation='softmax'))

这里我们使用 Dense 层,每个神经元都与前一层的所有神经元相连,并使用ReLU激活函数来增加非线性。

  1. 编译模型

在训练模型之前,我们需要通过编译来配置学习过程。在这里,我们使用交叉熵损失函数和RMSprop优化器。同时,我们还将添加准确率作为衡量指标。

network.compile(optimizer='rmsprop',
                loss='categorical_crossentropy',
                metrics=['accuracy'])
  1. 训练模型

现在我们可以使用我们加载的数据集来训练模型了。在这里,我们将训练模型5次(epochs=5)。

network.fit(train_images, train_labels, epochs=5, batch_size=128)
  1. 测试模型

使用训练好的模型对测试数据进行预测并计算准确率。

test_loss, test_acc = network.evaluate(test_images, test_labels)
  1. 实际应用

现在我们已经训练好了一个手写数字识别模型,可以在实际应用中使用了。以下是一个例子,演示了如何使用模型来识别手写数字。

import numpy as np
from keras.preprocessing import image

# 加载手写数字图像
img = image.load_img(path_to_img, grayscale=True, target_size=(28, 28))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)

# 预测手写数字
prediction = network.predict(x)

# 输出结果
print(prediction)

这里我们首先使用image.load_img函数加载一个手写数字图像,然后将其转换为模型所需的格式。最后使用network.predict

    데이터 전처리
    1. 머신러닝에서는 일반적으로 모델 성능을 향상시키기 위해 데이터를 전처리해야 합니다. MNIST 데이터셋의 경우 픽셀 값을 0~1 사이의 부동 소수점 숫자로 변환하고, 28x28 이미지를 784차원 벡터로 변환해야 모델에 입력할 수 있습니다.
    rrreee

      모델 구축

      🎜🎜Keras에서 신경망 구축은 매우 간단합니다. Sequential 객체를 정의한 다음 레이어를 추가하기만 하면 됩니다. 이 필기 숫자 인식 문제를 위해 우리는 두 개의 조밀한 레이어가 있는 간단한 신경망을 사용합니다. 🎜rrreee🎜여기에서는 각 뉴런이 이전 레이어의 모든 뉴런에 연결되는 Dense 레이어를 사용하고 ReLU 활성화 함수를 사용하여 비선형성을 추가합니다. 🎜
        🎜모델 컴파일🎜🎜🎜모델을 훈련하기 전에 컴파일을 통해 학습 프로세스를 구성해야 합니다. 여기서는 교차 엔트로피 손실 함수와 RMSprop 최적화 프로그램을 사용합니다. 동시에 측정항목으로 정확도도 추가할 예정입니다. 🎜rrreee
          🎜모델 교육🎜🎜🎜이제 로드한 데이터 세트를 사용하여 모델을 교육할 수 있습니다. 여기서는 모델을 5회 학습합니다(epochs=5). 🎜rrreee
            🎜모델 테스트🎜🎜🎜훈련된 모델을 사용하여 테스트 데이터를 예측하고 정확도를 계산합니다. 🎜rrreee
              🎜실용 적용🎜🎜🎜이제 우리는 필기 숫자 인식 모델을 학습시켰고 이를 실제 적용에 사용할 수 있습니다. 다음은 모델을 사용하여 손으로 쓴 숫자를 인식하는 방법을 보여주는 예입니다. 🎜rrreee🎜여기에서는 먼저 image.load_img 함수를 사용하여 손으로 쓴 숫자 이미지를 로드한 다음 모델에서 요구하는 형식으로 변환합니다. 마지막으로 network.predict 함수를 사용하여 결과를 예측하고 출력합니다. 🎜🎜🎜요약🎜🎜🎜이 글에서는 Python과 Keras 라이브러리를 이용하여 필기 숫자 인식을 구현하는 방법을 소개했습니다. 이 과정에서 우리는 MNIST 데이터 세트 로딩, 데이터 전처리, 신경망 모델 구축, 모델 컴파일, 모델 훈련, 모델 테스트 및 실제 적용에 대해 배웠습니다. 이 예가 초보자가 기계 학습을 더 잘 이해하는 데 도움이 되기를 바랍니다. 🎜

위 내용은 Python의 필기 숫자 인식 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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