Rumah >Peranti teknologi >industri IT >Panduan Pemula ke Keras: Pengiktirafan Digit dalam 30 Minit
Butiran artikel ini membina model keras untuk pengiktirafan digit tulisan tangan menggunakan rangkaian saraf konvolusi (CNN) dan dataset MNIST. Mari kita tegangkannya untuk kejelasan dan aliran yang lebih baik.
Membina pengiktirafan digit tulisan tangan dengan keras
Tutorial ini menunjukkan mencipta model untuk mengenali digit tulisan tangan menggunakan Python's Keras Library, API peringkat tinggi yang memudahkan bangunan dan latihan saraf. Kami akan memanfaatkan kuasa rangkaian saraf konvensional (CNNs) dan dataset MNIST yang digunakan secara meluas.
Memahami pendekatan
Model kami menggunakan CNN, seni bina yang sangat cekap untuk klasifikasi imej. Tidak seperti rangkaian saraf tradisional, data proses CNNS dalam pelbagai 3D (x, y koordinat dan warna), menjadikannya sesuai untuk data imej. Dataset MNIST, yang mengandungi 60,000 latihan dan 10,000 contoh ujian digit tulisan tangan, menyediakan data berlabel yang diperlukan untuk latihan.
Rangkaian Neural Buatan (ANNS) dan CNNS
Ann adalah model matematik yang mengubah data input ke dalam output melalui lapisan tersembunyi, setiap lapisan yang mewakili kebarangkalian. Latihan melibatkan penyesuaian berat dan bias berdasarkan kesilapan, yang membolehkan rangkaian mempelajari corak.
CNNS menawarkan kelebihan yang signifikan untuk pemprosesan imej. Struktur array 3D mereka bermakna setiap nod lapisan tersembunyi menghubungkan ke rantau input kecil, meningkatkan kecekapan secara dramatik berbanding dengan ANN tradisional. Lapisan CNN utama termasuk lapisan konvolusi (pengekstrakan ciri), lapisan penyatuan (pengurangan ciri), lapisan rata (pengurangan dimensi), dan lapisan klasifikasi akhir.
Bekerja dengan dataset MNIST
Dataset MNIST tersedia dalam Keras. Kami memuatkan data latihan dan ujian menggunakan . Menggambarkan digit sampel membantu memahami struktur data:
mnist.load_data()
<code class="language-python">from keras.datasets import mnist import matplotlib.pyplot as plt (x_train, y_train), (x_test, y_test) = mnist.load_data() image_index = 35 plt.imshow(x_train[image_index], cmap='Greys') plt.show()</code>
Preprocessing data
Sebelum penciptaan model, data memerlukan pra -proses:
.reshape()
. y_train
) ditukar kepada matriks kelas binari menggunakan y_test
untuk keserasian dengan output model. to_categorical()
<code class="language-python">from keras.datasets import mnist import matplotlib.pyplot as plt (x_train, y_train), (x_test, y_test) = mnist.load_data() image_index = 35 plt.imshow(x_train[image_index], cmap='Greys') plt.show()</code>
Reka bentuk dan latihan model
Model CNN kami dibina secara berurutan:
<code class="language-python">img_rows, img_cols = 28, 28 x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1) / 255 x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1) / 255 y_train = to_categorical(y_train, num_classes=10) y_test = to_categorical(y_test, num_classes=10)</code>Model ini dikumpulkan menggunakan
kehilangan (untuk label integer), pengoptimasi Adam, dan ketepatan sebagai metrik. Latihan dilakukan dengan menggunakan sparse_categorical_crossentropy
, menentukan zaman dan saiz batch. Model terlatih disimpan untuk kegunaan kemudian. .fit()
<code class="language-python">from keras.models import Sequential from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D model = Sequential([ Conv2D(32, (3, 3), activation='relu', input_shape=(img_rows, img_cols, 1)), Conv2D(64, (3, 3), activation='relu'), MaxPooling2D((2, 2)), Dropout(0.25), Flatten(), Dense(128, activation='relu'), Dropout(0.5), Dense(10, activation='softmax') # 10 output classes (digits 0-9) ])</code>
ujian dengan imej tersuai
Untuk menguji model, kami memuat imej digit tulisan tangan tersuai, pra -prosesnya (tukar ke skala kelabu, membentuk semula, menormalkan), memuatkan model yang disimpan, dan gunakan untuk mendapatkan klasifikasi. .predict()
<code class="language-python">model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(x_train, y_train, batch_size=128, epochs=10, validation_data=(x_test, y_test)) model.save("test_model.h5")</code>
Tutorial ini memberikan pemahaman asas untuk membina model pengiktirafan digit tulisan tangan menggunakan Keras dan CNNS. Walaupun mencapai ketepatan yang tinggi (mis., & Gt; 99%), penambahbaikan selanjutnya mungkin melalui penalaan parameter model, pembesaran data, dan meneroka seni bina CNN yang lebih maju. Soalan Lazim yang disediakan menawarkan pandangan lanjut mengenai konsep yang terlibat.
Atas ialah kandungan terperinci Panduan Pemula ke Keras: Pengiktirafan Digit dalam 30 Minit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!