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_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
Sequential オブジェクトを定義してレイヤーを追加するだけです。 。この手書き数字認識問題では、2 つの高密度層を持つ単純なニューラル ネットワークを使用します。
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 活性化関数を使用して非線形性を追加します。
network.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
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 関数を使用して結果を予測し、出力します。
以上がPython での手書き数字認識の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。