Python은 데이터 분석, 기계 학습, 이미지 처리 및 기타 분야에서 널리 사용되는 매우 강력한 프로그래밍 언어입니다. 머신러닝 분야에서 필기 숫자 인식은 매우 중요한 이슈로, 인증번호 인식, 자율주행, 음성인식 등 다양한 분야에 적용될 수 있습니다. 이번 글에서는 Python을 이용하여 필기 숫자 인식을 구현하는 방법을 소개하겠습니다.
머신러닝에서는 데이터세트 선택이 매우 중요합니다. 필기 숫자 인식 문제를 해결하려면 레이블이 지정된 데이터세트가 필요합니다. 가장 일반적으로 사용되는 데이터 세트는 MNIST(Modified National Institute of Standards and Technology) 데이터 세트로, 총 60,000개의 훈련 이미지와 10,000개의 테스트 이미지가 포함되어 있습니다. 각 이미지는 28x28 픽셀 회색조 이미지입니다.
MNIST 데이터세트를 사용하려면 Python 라이브러리를 통해 로드할 수 있습니다. 이 예에서는 Tensorflow의 Keras 라이브러리를 사용하여 MNIST 데이터세트를 로드합니다.
from keras.datasets import mnist # 加载MNIST数据集 (train_images, train_labels), (test_images, test_labels) = mnist.load_data()
여기서 훈련 이미지와 라벨을 train_images
및 train_labels
에 저장하고 테스트 이미지와 라벨을 test_images
및 test_labels
에 저장합니다. >. train_images
和 train_labels
中,将测试图像和标签存储在 test_images
和 test_labels
中。
在机器学习中,我们通常需要对数据进行预处理,以提高模型的表现。对于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
在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激活函数来增加非线性。
在训练模型之前,我们需要通过编译来配置学习过程。在这里,我们使用交叉熵损失函数和RMSprop优化器。同时,我们还将添加准确率作为衡量指标。
network.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
现在我们可以使用我们加载的数据集来训练模型了。在这里,我们将训练模型5次(epochs=5)。
network.fit(train_images, train_labels, epochs=5, batch_size=128)
使用训练好的模型对测试数据进行预测并计算准确率。
test_loss, test_acc = network.evaluate(test_images, test_labels)
现在我们已经训练好了一个手写数字识别模型,可以在实际应用中使用了。以下是一个例子,演示了如何使用模型来识别手写数字。
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
모델 구축
🎜🎜Keras에서 신경망 구축은 매우 간단합니다.Sequential
객체를 정의한 다음 레이어를 추가하기만 하면 됩니다. 이 필기 숫자 인식 문제를 위해 우리는 두 개의 조밀한 레이어가 있는 간단한 신경망을 사용합니다. 🎜rrreee🎜여기에서는 각 뉴런이 이전 레이어의 모든 뉴런에 연결되는 Dense
레이어를 사용하고 ReLU 활성화 함수를 사용하여 비선형성을 추가합니다. 🎜image.load_img
함수를 사용하여 손으로 쓴 숫자 이미지를 로드한 다음 모델에서 요구하는 형식으로 변환합니다. 마지막으로 network.predict
함수를 사용하여 결과를 예측하고 출력합니다. 🎜🎜🎜요약🎜🎜🎜이 글에서는 Python과 Keras 라이브러리를 이용하여 필기 숫자 인식을 구현하는 방법을 소개했습니다. 이 과정에서 우리는 MNIST 데이터 세트 로딩, 데이터 전처리, 신경망 모델 구축, 모델 컴파일, 모델 훈련, 모델 테스트 및 실제 적용에 대해 배웠습니다. 이 예가 초보자가 기계 학습을 더 잘 이해하는 데 도움이 되기를 바랍니다. 🎜위 내용은 Python의 필기 숫자 인식 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!