Keras
Keras là API Python cấp cao để xây dựng và huấn luyện mạng nơ-ron; kể từ Keras 3, Keras chạy cùng một đoạn code trên JAX, TensorFlow hoặc PyTorch.
Keras là API Python cấp cao, mã nguồn mở để xây dựng và huấn luyện mạng neural. François Chollet phát hành Keras vào tháng 3 năm 2015 nhằm giúp viết nhanh các experiment deep learning: model là một stack hoặc graph gồm các layer, compile thiết lập optimizer, hàm loss và metric, còn fit chạy vòng lặp huấn luyện. Keras trở thành API cấp cao chính thức của TensorFlow; Keras 3, phát hành vào tháng 11 năm 2023, chạy cùng một mã model trên JAX, TensorFlow hoặc PyTorch, được chọn khi import Keras. Mã ngắn gọn, dễ đọc khiến Keras trở thành lựa chọn phổ biến cho giảng dạy, tạo prototype và các cuộc thi Kaggle, cũng như cho model production trong phân loại ảnh và xử lý ngôn ngữ tự nhiên.
Cách Keras hoạt động#
Model Keras được xây dựng từ các layer như Dense, Conv2D, LSTM và MultiHeadAttention, mỗi layer chứa các weight riêng. Keras cung cấp ba cách kết hợp chúng: API Sequential cho một stack đơn giản, functional API cho graph có nhánh, layer dùng chung hoặc nhiều input, và kế thừa lớp keras.Model để toàn quyền kiểm soát forward pass. Model đã biên dịch được huấn luyện bằng fit, thành phần xử lý chia batch, lan truyền ngược, metric, dữ liệu validation và callback để lưu checkpoint hoặc dừng sớm; sau đó, model chấm điểm dữ liệu mới bằng evaluate và predict. Đoạn mã này huấn luyện một bộ phân loại chữ số nhỏ trên dataset MNIST đi kèm Keras:
import os
os.environ["KERAS_BACKEND"] = "torch" # or "jax" or "tensorflow", set before importing Keras
import keras
# MNIST handwritten digits, with pixels scaled to [0, 1]
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# Define the model as a stack of layers
model = keras.Sequential(
[
keras.Input(shape=(28, 28)),
keras.layers.Flatten(),
keras.layers.Dense(128, activation="relu"),
keras.layers.Dense(10, activation="softmax"),
]
)
# Configure training, then train and evaluate
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(x_train, y_train, epochs=2, batch_size=64, verbose=0)
loss, accuracy = model.evaluate(x_test, y_test, verbose=0)
print(f"Test accuracy: {accuracy:.3f}")Sau hai epoch, chương trình in ra accuracy trên tập kiểm thử khoảng 0.96; thay "torch" bằng "jax" hoặc "tensorflow" sẽ chạy cùng model trên framework khác mà không cần sửa dòng nào khác.
Keras 3 và các backend#
Ban đầu, Keras chạy trên nhiều engine, gồm Theano, TensorFlow và CNTK. Keras 2.3, phát hành vào tháng 9 năm 2019, là phiên bản cuối cùng hỗ trợ nhiều backend; sau đó, quá trình phát triển chuyển vào TensorFlow dưới dạng tf.keras. Keras 3 khôi phục tính độc lập với backend: các layer và model được viết dựa trên keras.ops, một tập hợp phép toán theo kiểu NumPy mà mỗi backend triển khai; do đó, model được lưu ở định dạng .keras có thể được tải lại và huấn luyện trên bất kỳ backend nào. Với backend PyTorch, model Keras cũng là một torch.nn.Module mà vòng lặp huấn luyện PyTorch tùy chỉnh có thể sử dụng; từ Keras 3.8, backend OpenVINO chỉ dùng để suy luận cũng có thể chạy model đã huấn luyện trên phần cứng Intel.
Từ TensorFlow 2.16, cài đặt TensorFlow cũng cài Keras 3; mã vẫn cần Keras 2 sẽ dùng package riêng tf_keras. Các công cụ chuyển đổi model cũng nhắm đến Keras: khi Ultralytics YOLO xuất YOLO26 sang TensorFlow SavedModel, bộ chuyển đổi onnx2tf dựng lại mạng PyTorch từ graph ONNX dưới dạng model Keras, theo từng layer, trước khi lưu.
Model đã huấn luyện trước trong KerasHub#
KerasHub cung cấp các bản triển khai Keras 3 của những kiến trúc phổ biến cùng checkpoint đã huấn luyện trước, chẳng hạn ResNet cho ảnh, BERT cho văn bản và mô hình ngôn ngữ lớn Gemma. Tên preset tải một model sẵn sàng cho transfer learning: keras_hub.models.ImageClassifier.from_preset("resnet_50_imagenet") trả về một bộ phân loại đã huấn luyện trên ImageNet mà fine-tuning có thể điều chỉnh cho dataset mới bằng cùng lệnh gọi fit đã dùng ở trên. Giống các thành phần khác của Keras 3, model KerasHub chạy trên cả ba backend huấn luyện.
Keras so với TensorFlow và PyTorch#
- TensorFlow: Framework đầy đủ với runtime, compiler và công cụ triển khai riêng như TensorFlow Serving và LiteRT. Keras là API mà nhiều người dùng TensorFlow viết model bằng API này, còn TensorFlow là một trong những engine chạy mã Keras.
- PyTorch: Framework mà người dùng thường tự viết vòng lặp huấn luyện hoặc dùng thư viện như PyTorch Lightning. Keras cung cấp vòng lặp thông qua
fitvà có thể dùng PyTorch làm backend, vì vậy hai công cụ này không loại trừ lẫn nhau. - JAX: Thư viện của Google cung cấp các phép biến đổi hàm có thể kết hợp để vi phân, biên dịch XLA và vector hóa. JAX không có API layer hay huấn luyện tích hợp sẵn; Keras là một trong những cách bổ sung các API này.










