Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Contoh pengecaman digit tulisan tangan dalam Python

Contoh pengecaman digit tulisan tangan dalam Python

WBOY
WBOYasal
2023-06-11 10:13:362196semak imbas

Python ialah bahasa pengaturcaraan yang sangat berkuasa yang digunakan secara meluas dalam analisis data, pembelajaran mesin, pemprosesan imej dan bidang lain. Dalam bidang pembelajaran mesin, pengecaman digit tulisan tangan merupakan isu yang sangat penting dan boleh digunakan pada banyak bidang seperti pengecaman kod pengesahan, pemanduan autonomi dan pengecaman pertuturan. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan pengecaman digit tulisan tangan menggunakan Python.

  1. Pengenalan kepada set data

Dalam pembelajaran mesin, pemilihan set data adalah sangat penting. Untuk masalah pengecaman digit tulisan tangan, kami memerlukan set data berlabel. Set data yang paling biasa digunakan ialah set data MNIST (Modified National Institute of Standards and Technology), yang mengandungi sejumlah 60,000 imej latihan dan 10,000 imej ujian Setiap imej ialah imej skala kelabu 28x28 piksel.

  1. Memuatkan set data

Untuk menggunakan set data MNIST, kami boleh memuatkannya melalui pustaka python. Dalam contoh ini, kami menggunakan pustaka Keras Tensorflow untuk memuatkan set data MNIST.

from keras.datasets import mnist

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

Di sini kami menyimpan imej dan label latihan dalam train_images dan train_labels serta menguji imej dan label dalam test_images dan test_labels.

  1. Prapemprosesan data

Dalam pembelajaran mesin, kita biasanya perlu pramemproses data untuk meningkatkan prestasi model. Untuk set data MNIST, kita perlu menukar nilai piksel kepada nombor titik terapung antara 0 dan 1, dan menukar imej 28x28 kepada vektor 784 dimensi supaya kita boleh memasukkannya ke dalam model.

# 数据预处理
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. Membina model

Membina rangkaian saraf di Keras adalah sangat mudah, kita hanya perlu mentakrifkan objek Sequential dan kemudian menambah lapisan. Untuk masalah pengecaman digit tulisan tangan ini, kami menggunakan rangkaian saraf mudah dengan dua lapisan padat.

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'))

Di sini kami menggunakan lapisan Dense, setiap neuron disambungkan kepada semua neuron lapisan sebelumnya, dan menggunakan fungsi pengaktifan ReLU untuk menambah bukan linear.

  1. Kompilasi model

Sebelum melatih model, kita perlu mengkonfigurasi proses pembelajaran melalui kompilasi. Di sini kami menggunakan fungsi kehilangan entropi silang dan pengoptimum RMSprop. Pada masa yang sama, kami juga akan menambah ketepatan sebagai metrik.

network.compile(optimizer='rmsprop',
                loss='categorical_crossentropy',
                metrics=['accuracy'])
  1. Melatih model

Kini kami boleh melatih model menggunakan set data yang kami muatkan. Di sini, kita akan melatih model 5 kali (zaman=5).

network.fit(train_images, train_labels, epochs=5, batch_size=128)
  1. Model ujian

Gunakan model terlatih untuk meramal data ujian dan mengira ketepatan.

test_loss, test_acc = network.evaluate(test_images, test_labels)
  1. Aplikasi Praktikal

Kini kami telah melatih model pengecaman digit tulisan tangan yang boleh digunakan dalam aplikasi praktikal. Di bawah ialah contoh yang menunjukkan cara menggunakan model untuk mengecam digit tulisan tangan.

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)

Di sini kita mula-mula memuatkan imej digit tulisan tangan menggunakan fungsi image.load_img dan kemudian menukarnya kepada format yang diperlukan oleh model. Akhir sekali, gunakan fungsi network.predict untuk membuat ramalan dan mengeluarkan keputusan.

  1. Ringkasan

Dalam artikel ini, kami memperkenalkan cara melaksanakan pengecaman digit tulisan tangan menggunakan perpustakaan Python dan Keras. Dalam proses ini, kami belajar tentang memuatkan set data MNIST, prapemprosesan data, membina model rangkaian saraf, menyusun model, melatih model, menguji model dan aplikasi praktikal. Harap contoh ini dapat membantu pemula memahami pembelajaran mesin dengan lebih baik.

Atas ialah kandungan terperinci Contoh pengecaman digit tulisan tangan dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn