Rumah >Peranti teknologi >industri IT >Panduan Pemula ke Keras: Pengiktirafan Digit dalam 30 Minit

Panduan Pemula ke Keras: Pengiktirafan Digit dalam 30 Minit

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-02-10 15:27:16275semak imbas

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.

A Beginner's Guide to Keras: Digit Recognition in 30 Minutes

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.

A Beginner's Guide to Keras: Digit Recognition in 30 Minutes

Bekerja dengan dataset MNIST A Beginner's Guide to Keras: Digit Recognition in 30 Minutes

Dataset MNIST tersedia dalam Keras. Kami memuatkan data latihan dan ujian menggunakan . Menggambarkan digit sampel membantu memahami struktur data:

mnist.load_data()

Set latihan dan ujian mempunyai dimensi (60000, 28, 28) dan (10000, 28, 28) masing -masing, menunjukkan imej 28x28 piksel.
<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>

A Beginner's Guide to Keras: Digit Recognition in 30 Minutes Preprocessing data

Sebelum penciptaan model, data memerlukan pra -proses:

  1. membentuk semula: imej semula (M x n x 1) Format menggunakan .reshape().
  2. Normalisasi: Nilai piksel (0-255) dinormalisasi kepada 0-1 dengan membahagikan 255.
  3. Pengekodan satu-panas: Pembolehubah bergantung (, 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:

  1. Lapisan Convolutional: Ciri -ciri ekstrak dari imej input.
  2. lapisan penyatuan: mengurangkan dimensi dan kos pengiraan.
  3. Lapisan dropout: menghalang overfitting.
  4. Lapisan rata: Menukar output multi-dimensi ke array 1D.
  5. Lapisan padat: Lakukan klasifikasi akhir.
<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>

A Beginner's Guide to Keras: Digit Recognition in 30 Minutes

Kesimpulan

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!

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