
Pengenalan kepada Model Compression
Pemampatan model ialah proses yang bertujuan untuk mengurangkan kerumitan dan saiz pembelajaran mesin atau model pembelajaran mendalam untuk meningkatkan prestasinya dan mengurangkan sumber yang diperlukan untuk penggunaan. Ini amat berguna dalam aplikasi yang mempunyai storan terhad atau kuasa pengiraan yang tersedia, seperti telefon pintar atau peranti lain dengan kapasiti memori yang lebih kecil. Matlamat utama adalah untuk mengekalkan ketepatan model sambil mengurangkan saiz dan keperluan pengiraannya.
Terdapat beberapa teknik untuk mencapai matlamat ini, seperti pemangkasan, kuantisasi, dan penyulingan pengetahuan. Dalam artikel ini, kami akan menumpukan pada pendekatan praktikal untuk memampatkan model menggunakan bahasa pengaturcaraan Python, memberikan penjelasan langkah demi langkah dan kod sampel.
Mampatan Model dengan TensorFlow dan Keras
Dalam artikel ini, kami akan menggunakan rangka kerja pembelajaran mendalam yang popular, TensorFlow and Keras, untuk menunjukkan cara untuk memampatkan dan mengoptimumkan Rangkaian Neural Konvolusi (CNN) – model berkuasa yang biasa digunakan untuk tugas pengelasan imej dalam fesyen dan domain lain.
Sebelum menyelami penyelesaiannya, mari kita gariskan dahulu masalah tersebut dan perkenalkan beberapa perpustakaan dan fungsi penting yang terlibat dalam pemampatan model.
- Masalah: Kami mempunyai CNN berprestasi tinggi yang dipralatih pada set data yang besar untuk tujuan pengelasan imej. Model ini kompleks dan mempunyai jejak memori yang besar, yang boleh menjadi masalah untuk penggunaan pada peranti sumber terhad seperti telefon mudah alih atau peranti IoT.
- Objektif: Untuk memampatkan model CNN sambil mengekalkan ketepatan dan prestasinya.
Untuk mencapai matlamat yang diingini, kami akan meneroka menggunakan teknik pemampatan model berikut dalam Python:
1. Pemangkasan Model: Teknik ini membuang pemberat atau neuron yang tidak perlu dalam model, mengurangkan kerumitan dan saiznya.
2. Kuantiti Model: Pendekatan ini mengurangkan lebar bit berat dan pengaktifan model, yang membawa kepada pengurangan ruang storan dan pengiraan yang lebih pantas.
Penjelasan Langkah demi Langkah – Contoh Pemampatan Model
Untuk kesederhanaan, mari kita anggap kita mempunyai model CNN terlatih di Keras untuk klasifikasi imej fesyen. Kami akan menggunakan kit alat pengoptimuman model TensorFlow untuk memampatkan model ini menggunakan teknik yang dinyatakan sebelum ini.
# Import necessary libraries import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers from tensorflow_model_optimization import sparsity import numpy as np
Mula-mula, kami akan menggunakan Model Pruning, menggunakan fungsi `PruneLowMagnitude` yang tersedia dalam perpustakaan Pengoptimuman Model TensorFlow.
# Load the pre-trained CNN model
model = keras.models.load_model("path/to/your/pretrained/model")
# Define the pruning configurations
pruning_params = {
'pruning_schedule': sparsity.ConstantSparsity(0.5, begin_step=2000, frequency=100)
}
# Apply pruning to the model
pruned_model = sparsity.prune_low_magnitude(model, **pruning_params)
Seterusnya, mari gunakan Kuantiti Model menggunakan TensorFlow Lite.
# Convert the pruned model to TensorFlow Lite format converter = tf.lite.TFLiteConverter.from_keras_model(pruned_model) converter.optimizations = [tf.lite.Optimize.DEFAULT] # Apply quantization quantized_model = converter.convert()
Selepas menggunakan pemangkasan dan pengkuantitian, model kini dimampatkan dan sedia untuk digunakan.
Ringkasnya, kami telah menunjukkan cara untuk memampatkan model CNN yang telah terlatih menggunakan TensorFlow dan Keras. Teknik ini akan membantu mengurangkan kerumitan, jejak ingatan dan keperluan pengiraan model tanpa menjejaskan ketepatannya dengan ketara, membolehkan penggunaan lebih mudah pada peranti terhad sumber dalam industri fesyen dan seterusnya.