Rumah > Artikel > pembangunan bahagian belakang > Contoh pengecaman digit tulisan tangan dalam Python
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.
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.
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
.
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
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.
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'])
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)
Gunakan model terlatih untuk meramal data ujian dan mengira ketepatan.
test_loss, test_acc = network.evaluate(test_images, test_labels)
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.
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!