Keras là API học sâu (deep learning) viết bằng Python, chạy trên TensorFlow. Nó cung cấp giao diện cấp cao, hỗ trợ thử nghiệm nhanh, mở rộng tốt, chạy trên TPU/GPU, xuất mô hình ra web/mobile.
Functional API của Keras linh hoạt hơn Sequential API: hỗ trợ topo không tuyến tính, chia sẻ lớp, nhiều đầu vào/đầu ra. Mô hình học sâu là đồ thị acyclic có hướng (DAG) các lớp.
Sử dụng Google Colab (chạy Python trên trình duyệt, miễn phí GPU). Dưới đây là code huấn luyện mô hình trên bộ dữ liệu CIFAR-10:
Ví dụ
print("Đang vẽ mô hình")
keras.utils.plot_model(model, "my_resnet.png", show_shapes=True)
print("Chia dữ liệu thành tập huấn luyện và kiểm tra")
(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()
print("Chuyển đổi kiểu dữ liệu sang float")
x_train = x_train.astype("float32") / 255.0
x_test = x_test.astype("float32") / 255.0
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)
print("Biên dịch mô hình")
model.compile(
optimizer=keras.optimizers.RMSprop(1e-3),
loss=keras.losses.CategoricalCrossentropy(from_logits=True),
metrics=["acc"],
)
model.fit(x_train[:2000], y_train[:2000], batch_size=64, epochs=2, validation_split=0.2)
Nguồn: TensorFlow Guide
Đầu ra
Đang vẽ mô hình Chia dữ liệu thành tập huấn luyện và kiểm tra Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz 170500096/170498071 [==============================] - 2s 0us/step Chuyển đổi kiểu dữ liệu sang float Biên dịch mô hình Epoch 1/2 25/25 [==============================] - 9s 332ms/step - loss: 2.3163 - acc: 0.1028 - val_loss: 2.2962 - val_acc: 0.1175 Epoch 2/2 25/25 [==============================] - 12s 492ms/step - loss: 2.3155 - acc: 0.1175 - val_loss: 2.2606 - val_acc: 0.1200 <tensorflow.python.keras.callbacks.History at 0x7f48d3ecfb00>
Giải thích
- Chia dữ liệu thành tập huấn luyện và kiểm tra.
- Chuyển kiểu dữ liệu sang float và chuẩn hóa.
- Biên dịch mô hình bằng phương thức
compile(optimizer, loss, metrics). - Huấn luyện bằng phương thức
fittrên dữ liệu huấn luyện.