Nếu bạn chưa nghe qua về định nghĩa AutoML thì bạn có thể đọc định nghĩa của mình ở đây: AutoMl là gì
Trong bài viết này mình sẽ hướng dẫn các bạn sử dụng AutoKeras để làm một ví dụ đơn giản về auto ML trong việc phân loại chữ số viết tay với tập dataset mnist
Chúng ta cần cài đặt thư viện AutoKeras bằng trình quản lý gói của python3. AutoKeras chỉ hỗ trợ python 3 nếu bạn không biết cách tạo virtualenv thì có thể xem ở đây: Cách tạo virtualenv trong python
Yêu cầu
- python3
- pip
- Tensorflow >= 2.3.0
Các bạn có thể dùng pip để cài đặt tensorflow
Cài đặt autokeras
pip install autokeras
Chuẩn bị dữ liệu
Bước đầu tiên là chuẩn bị dữ liệu của bạn. Ở đây chúng tôi sử dụng tập dữ liệu MNIST làm ví dụ
import numpy as np
import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.python.keras.utils.data_utils import Sequence
import autokeras as ak
(x_train, y_train), (x_test, y_test) = mnist.load_data()
print(x_train.shape) # (60000, 28, 28)
print(y_train.shape) # (60000,)
print(y_train[:3]) # array([7, 2, 1], dtype=uint8)
Chạy Image Classifier - trình phân loại hình ảnh
Khuyến nghị nên có nhiều thử nghiệm hơn cho các bộ dữ liệu phức tạp hơn. Đây chỉ là một bản demo nhanh của MNIST, vì vậy đặt max_trials thành 1(số này cần tăng lên cho những dataset phức tạp hơn). Vì lý do tương tự, đặt epochs thành 10( cần tăng trên những dataset phức tạp). Autokeras sẽ tự động tạo model cho chúng ta.
# Initialize the image classifier.
clf = ak.ImageClassifier(
overwrite=True,
max_trials=1)
# Feed the image classifier with training data.
clf.fit(x_train, y_train, epochs=10)
# Predict with the best model.
predicted_y = clf.predict(x_test)
print(predicted_y)
# Evaluate the best model with testing data.
print(clf.evaluate(x_test, y_test))
Kết quả chúng ta được
[['7']
['2']
['1']
...
['4']
['5']
['6']]
313/313 [==============================] - 2s 5ms/step - loss: 0.0343 - accuracy: 0.9899
[0.03425610065460205, 0.9898999929428101]
Validation Data
Theo mặc định, AutoKeras sử dụng 20% dữ liệu đào tạo ở cuối làm dữ liệu xác thực. Như thể hiện trong ví dụ bên dưới, bạn có thể sử dụng validation_split để chỉ định tỷ lệ phần trăm.
clf.fit(
x_train,
y_train,
# Split the training data and use the last 15% as validation data.
validation_split=0.15,
epochs=10,
)
Bạn cũng có thể sử dụng bộ xác thực của riêng mình thay vì tách nó ra khỏi dữ liệu đào tạo với validation_data.
split = 50000
x_val = x_train[split:]
y_val = y_train[split:]
x_train = x_train[:split]
y_train = y_train[:split]
clf.fit(
x_train,
y_train,
# Use your own validation set.
validation_data=(x_val, y_val),
epochs=10,
)