Dalam artikel ini, kita akan membahas cara membuat mannequin klasifikasi untuk dataset MNIST menggunakan TensorFlow. Kita akan menggabungkan penjelasan tentang proses ahead propagation, serta teknik lainnya seperti flattening dalam satu kesatuan kode Python.
import tensorflow as tf# Load information
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
# Preprocess information
x_train = x_train.reshape(x_train.form[0], 28 * 28).astype('float32') / 255
x_test = x_test.reshape(x_test.form[0], 28 * 28).astype('float32') / 255
# Outline the mannequin
mannequin = tf.keras.Sequential([
tf.keras.layers.Dense(512, activation='relu', input_shape=(28 * 28,)),
tf.keras.layers.Dense(10, activation='softmax')
])
# Compile the mannequin
mannequin.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# Practice the mannequin
mannequin.match(x_train, y_train, epochs=5)
# Consider the mannequin
test_loss, test_acc = mannequin.consider(x_test, y_test)
print('Take a look at accuracy:', test_acc)
- Mengimpor TensorFlow dan Memuat Information:
Pertama, kita mengimpor TensorFlow dan memuat dataset MNIST. Dataset ini dibagi menjadi information latih (x_train
, y_train
) dan information uji (x_test
, y_test
).
import tensorflow as tf# Load information
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
2. Preprocessing Information:
Gambar pada dataset MNIST memiliki dimensi 28×28 piksel. Kita melakukan proses flatten (meratakan) dengan meresap ulang information tersebut menjadi vektor 1D dengan panjang 784 (28×28) dan menormalisasi nilai piksel ke rentang 0–1 dengan membaginya dengan 255.
# Preprocess information
x_train = x_train.reshape(x_train.form[0], 28 * 28).astype('float32') / 255
x_test = x_test.reshape(x_test.form[0], 28 * 28).astype('float32') / 255
3. Mendefinisikan Mannequin :
Mannequin kita adalah mannequin sekuensial dengan dua lapisan Dense (absolutely linked). Lapisan pertama memiliki 512 neuron dengan fungsi aktivasi ReLU, dan lapisan kedua memiliki 10 neuron dengan fungsi aktivasi softmax untuk klasifikasi 10 kelas digit (0–9).
# Outline the mannequin
mannequin = tf.keras.Sequential([
tf.keras.layers.Dense(512, activation='relu', input_shape=(28 * 28,)),
tf.keras.layers.Dense(10, activation='softmax')
])
4. Ahead Propagation :
Pada tahap ini, enter berupa gambar digit yang telah di-flatten dan dinormalisasi mengalir melalui jaringan:
- Lapisan pertama: Enter dikalikan dengan bobot, ditambahkan bias, lalu fungsi aktivasi ReLU diterapkan untuk memperkenalkan non-linearitas.
- Lapisan kedua: Output dari lapisan pertama dikalikan dengan bobot, ditambahkan bias, lalu fungsi aktivasi softmax menghasilkan probabilitas untuk setiap kelas.
5. Kompilasi Mannequin:
Kita mengkompilasi mannequin menggunakan optimizer Adam, loss perform sparse_categorical_crossentropy
, dan metrik accuracy
untuk evaluasi.
# Compile the mannequin
mannequin.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
5. Backpropagation dan Pelatihan Mannequin:
Mannequin dilatih selama 5 epoch menggunakan information latih. Selama proses ini, backpropagation digunakan untuk memperbarui bobot berdasarkan error antara output yang diprediksi dan output yang sebenarnya. Optimizer Adam menggunakan gradien ini untuk meminimalkan loss perform.
# Practice the mannequin
mannequin.match(x_train, y_train, epochs=5)
5. Evaluasi Mannequin
Setelah pelatihan, kita evaluasi mannequin menggunakan information uji dan mencetak akurasi mannequin.
# Consider the mannequin
test_loss, test_acc = mannequin.consider(x_test, y_test)
print('Take a look at accuracy:', test_acc)
Dalam kode di atas, kita melihat bagaimana ahead propagation digunakan untuk menghasilkan prediksi, sementara backpropagation digunakan untuk memperbarui bobot sehingga mannequin dapat belajar dan meningkatkan akurasinya. Flattening adalah salah satu teknik preprocessing penting yang mengubah gambar 2D menjadi vektor 1D yang dapat diinput ke dalam jaringan saraf.