Hiểu shape, rank, dtype và axis trước; sau đó khám phá TensorFlow, Keras, GradientTape, graph, GPU và cách đưa mô hình vào sản phẩm.
Tên TensorFlow có thể hiểu nôm na là “dòng chảy của tensor”. Muốn hiểu framework này, trước tiên phải hiểu thứ đang chảy là gì.
Hãy bắt đầu từ những thứ quen thuộc:
Trong toán học và machine learning, tất cả có thể biểu diễn bằng tensor.
| Dữ liệu | Cách hình dung | Rank thường gặp |
|---|---|---|
| Một số 7 | Scalar | 0 |
| Danh sách [1, 2, 3] | Vector | 1 |
| Bảng hàng × cột | Matrix | 2 |
| Ảnh màu cao × rộng × 3 kênh | Tensor 3 chiều | 3 |
| Một batch ảnh | Số ảnh × cao × rộng × kênh | 4 |
| Một batch video | Số video × thời gian × cao × rộng × kênh | 5 |
Rank là số trục của tensor, không phải số phần tử. Một ảnh 4K có hàng triệu giá trị nhưng vẫn thường là tensor rank 3.
!Minh họa tensor từ một số, vector, ma trận, ảnh RGB, batch ảnh đến batch video
Đọc hình từ trái sang phải: một giá trị → dãy 6 số → bảng 4×5 → ảnh có ba kênh màu 4×5×3 → N ảnh → N video, mỗi video có T khung hình. Rank tăng khi ta thêm một trục mới; kích thước từng trục nằm trong shape.
Shape cho biết tensor dài bao nhiêu trên từng trục.
Ví dụ một batch 32 ảnh màu 224 × 224 pixel có thể có shape:
`[32, 224, 224, 3]`
Ý nghĩa:
Một số framework hoặc model dùng thứ tự `[batch, channel, height, width]`, tức `[32, 3, 224, 224]`. Hai tensor có cùng số phần tử nhưng khác thứ tự trục có thể làm model báo lỗi hoặc cho kết quả sai.
Tensor còn có kiểu dữ liệu:
Dtype không phải chi tiết trang trí. Nó ảnh hưởng bộ nhớ, tốc độ, độ chính xác số học và phần cứng nào có thể tăng tốc.
Một triệu giá trị `float32` cần khoảng 4 MB chỉ để lưu số; `float16` cần khoảng một nửa. Nhưng đổi dtype tùy tiện có thể khiến model mất ổn định hoặc giảm độ chính xác.
Axis là chiều mà một phép toán tác động.
Với bảng điểm shape `[lớp, học sinh, môn]`:
Tensor có thể ở RAM của CPU, bộ nhớ GPU hoặc accelerator khác. Phép tính chỉ thực hiện được khi dữ liệu và model nằm trên thiết bị tương thích.
Chuyển tensor lớn qua lại giữa CPU và GPU giống chở hàng qua cầu: dù hai nhà máy đều nhanh, giao thông liên tục vẫn làm toàn hệ thống chậm.
Tensor khá giống mảng NumPy, nhưng các framework AI bổ sung những khả năng quan trọng:
Trong TensorFlow, `tf.Tensor` là bất biến: không sửa trực tiếp nội dung mà tạo tensor mới. Trọng số cần thay đổi khi model học thường được lưu trong `tf.Variable`.
import tensorflow as tf
x = tf.constant([
[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0]
])
print(x.shape) # (2, 3)
print(x.dtype) # float32
print(tf.reduce_sum(x)) # 21.0Tensor trên có hai hàng và ba cột. `tf.reduce_sum` cộng toàn bộ phần tử.
Muốn giữ một giá trị có thể cập nhật:
weight = tf.Variable([1.0, 2.0])
weight.assign([1.5, 2.5])Model học bằng cách thay đổi những variable như vậy.
Theo tài liệu chính thức, TensorFlow là nền tảng end-to-end cho machine learning. Nó hỗ trợ:
TensorFlow không phải:
Python thường là ngôn ngữ điều khiển. TensorFlow là thư viện và runtime thực hiện công việc.
Core chứa tensor, phép toán, automatic differentiation, graph, thiết bị và các API mức thấp.
Bạn có thể viết training loop hoàn toàn bằng Core, nhưng người mới thường không cần bắt đầu ở đây.
Keras là API cấp cao được khuyến nghị cho phần lớn người dùng TensorFlow. Nó cung cấp:
Nếu TensorFlow là một nhà máy, Core là máy móc bên trong còn Keras là bảng điều khiển giúp kỹ sư vận hành mà không phải tự nối từng dây điện.
`tf.data` giúp đọc, biến đổi, shuffle, batch, prefetch và cung cấp dữ liệu cho model.
GPU đắt tiền có thể phải ngồi chờ nếu pipeline dữ liệu quá chậm. Vì vậy tốc độ model không chỉ phụ thuộc số TOPS/FLOPS; cách chuẩn bị và giao dữ liệu cũng rất quan trọng.
TensorFlow có thể chạy ở chế độ eager, tức câu lệnh được thực hiện ngay, thuận tiện để thử và debug.
`@tf.function` cho phép TensorFlow quan sát các phép toán tensor rồi tạo graph tối ưu. Graph có thể:
Nhưng nếu input thay đổi shape/dtype, TensorFlow có thể phải trace lại. Code Python có side effect cũng có thể cư xử khác bên trong graph. Vì vậy, graph nhanh và dễ triển khai hơn trong nhiều trường hợp, nhưng cần hiểu cách tracing hoạt động.
Model sau huấn luyện cần lưu kiến trúc, weights và chữ ký hàm phục vụ inference.
Keras khuyến nghị định dạng `.keras` cho việc lưu object Keras. SavedModel phù hợp với nhiều luồng export và serving của TensorFlow.
Tên file không quyết định model chạy tốt; vẫn phải lưu cùng preprocessing, vocabulary, nhãn, phiên bản code và metadata.
Tùy môi trường triển khai:
“Train bằng TensorFlow” không có nghĩa cùng một file tự chạy tối ưu trên mọi thiết bị.
!Minh họa vòng huấn luyện TensorFlow từ dữ liệu đến model, loss, gradient và cập nhật trọng số
Vòng màu cam là forward: batch dữ liệu đi qua mạng để tạo dự đoán rồi được so với đáp án để tính loss. Vòng màu xanh là backward: gradient đi ngược để optimizer chỉnh các trọng số. Khi huấn luyện xong, nhánh màu xanh lá đưa model sang server, máy tính hoặc điện thoại để inference.
Quy trình lõi giống PyTorch:
1. Dữ liệu được chuyển thành tensor;
2. Model thực hiện forward pass;
3. Loss đo mức sai;
4. Automatic differentiation tính gradient;
5. Optimizer cập nhật weights;
6. Lặp lại qua nhiều batch và epoch;
7. Đánh giá trên dữ liệu chưa được học.
TensorFlow dùng `tf.GradientTape` để ghi lại phép toán cần cho việc tính gradient ở mức thấp.
with tf.GradientTape() as tape:
prediction = model(x, training=True)
loss = loss_fn(y, prediction)
gradients = tape.gradient(loss, model.trainable_variables)
optimizer.apply_gradients(zip(gradients, model.trainable_variables))Keras có thể bọc quy trình này vào `model.fit()`:
model.compile(
optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=["accuracy"]
)
model.fit(train_data, epochs=10)Hai cách không đối lập. `fit()` tiện cho phần lớn bài toán; custom loop phù hợp khi logic huấn luyện đặc biệt.
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Input(shape=(2,)),
tf.keras.layers.Dense(8, activation="relu"),
tf.keras.layers.Dense(1)
])
model.compile(optimizer="adam", loss="mse")Model nhận hai con số, đưa qua lớp tám nút rồi trả ra một số. Nó chưa biết gì cho tới khi được cung cấp dữ liệu và gọi `fit()`.
Điều này cho thấy TensorFlow không “tạo AI tự động”. Nó cung cấp cấu trúc và công cụ; chất lượng vẫn phụ thuộc dữ liệu, mục tiêu, cách đánh giá và vận hành.
TensorFlow giúp các đội kỹ thuật có một hệ sinh thái tương đối liền mạch từ nghiên cứu tới production:
Đặc biệt, Keras giúp người mới tạo model với ít code hơn, trong khi Core vẫn cho phép can thiệp sâu.
Tuy nhiên, “hệ sinh thái lớn” không có nghĩa mọi dự án nên dùng TensorFlow. Framework phù hợp phụ thuộc code hiện có, kỹ năng đội ngũ, model mã nguồn mở cần dùng và thiết bị đích.
Cả hai đều dùng tensor, automatic differentiation, GPU và neural network. Sự khác biệt ngày nay nhỏ hơn những tranh luận cũ.
| Câu hỏi | TensorFlow/Keras | PyTorch |
|---|---|---|
| API bắt đầu nhanh | Keras, model.fit | nn.Module và training loop |
| Trải nghiệm mặc định | Eager, có tf.function/graph | Eager, có torch.compile |
| Auto differentiation | GradientTape | autograd/backward |
| Dữ liệu | tf.data | Dataset/DataLoader |
| Lưu/triển khai | .keras, SavedModel, Serving, TensorFlow.js, LiteRT | state_dict, torch.export, ExecuTorch và runtime khác |
| Tăng tốc graph | tf.function/XLA | torch.compile/Inductor |
| Nên chọn | Theo hệ sinh thái và thiết bị đích | Theo hệ sinh thái và thiết bị đích |
Không nên nói TensorFlow chỉ dùng cho production còn PyTorch chỉ dùng cho nghiên cứu. Cả hai đều có thể làm cả hai.
Bạn có thể đọc bài PyTorch là gì? để đối chiếu cùng một vòng học qua hai cách viết.
Khi TensorFlow chạy phép toán được hỗ trợ trên GPU NVIDIA:
TensorFlow không thay thế CUDA và CUDA không thay thế TensorFlow.
Có GPU NVIDIA cũng chưa đủ. Phiên bản TensorFlow, driver, CUDA/cuDNN, hệ điều hành và package phải tương thích. Vì vậy nên dùng hướng dẫn cài chính thức hoặc container đã kiểm thử thay vì ghép phiên bản từ nhiều blog cũ.
TPU là bộ tăng tốc do Google thiết kế cho machine learning. TensorFlow có hỗ trợ mạnh cho TPU, đặc biệt với chiến lược phân tán.
Nhưng TPU không phải “GPU nhanh hơn trong mọi việc”. Hiệu quả phụ thuộc workload, batch, kiểu số, pipeline dữ liệu và mức độ tương thích của model. Chi phí chuyển hệ thống cũng phải được tính.
Máy học cuối cùng vẫn cần số. Văn bản thường được xử lý theo các bước:
1. Chuỗi chữ;
2. Tokenization;
3. Mỗi token thành ID số;
4. ID thành embedding;
5. Embedding tạo tensor để model xử lý.
TensorFlow có `tf.string` và các lớp preprocessing, nhưng phép học chính thường hoạt động trên biểu diễn số.
Tương tự, ảnh JPEG phải được giải mã thành pixel; âm thanh phải thành chuỗi mẫu hoặc đặc trưng; dữ liệu bảng phải được chuẩn hóa/mã hóa.
Tensor thông thường có shape chữ nhật: mỗi hàng dài bằng nhau. Dữ liệu thực tế không luôn đẹp như vậy.
Hai cấu trúc này tiết kiệm hoặc diễn đạt dữ liệu tốt hơn trong một số bài toán, nhưng không phải mọi layer và accelerator đều xử lý giống tensor dense. Trước khi chọn, phải kiểm tra đường chạy toàn model.
TensorFlow có thể thực hiện phép toán giữa tensor có shape khác nhau nếu chúng tương thích theo quy tắc broadcasting.
Ví dụ cộng một vector ba phần tử vào từng hàng của ma trận có ba cột.
Broadcasting giúp code ngắn, nhưng cũng dễ tạo lỗi âm thầm. Tensor vô tình có shape `[N, 1]` thay vì `[N]` có thể làm kết quả nở thành `[N, N]`, tốn bộ nhớ mà vẫn không báo lỗi ngay.
Khi debug, luôn in `shape`, `dtype` và một vài giá trị mẫu trước khi nghi ngờ thuật toán phức tạp.
`reshape` chỉ đổi cách nhìn các phần tử, miễn tổng số phần tử giữ nguyên.
x = tf.constant([1, 2, 3, 4, 5, 6])
y = tf.reshape(x, [2, 3])`x` có sáu số; `y` vẫn sáu số nhưng trình bày thành hai hàng, ba cột.
Reshape khác transpose. Transpose đổi trật tự axis; reshape chỉ sắp cách chia shape. Nhầm hai thao tác là lỗi rất phổ biến trong image, sequence và attention.
Ngay cả CEO hoặc PM không code cũng nên hiểu tensor vì nó liên quan trực tiếp đến chi phí:
Một yêu cầu tưởng đơn giản như “camera phải nhìn rõ hơn” có thể kéo theo chi phí GPU, băng thông, lưu trữ và độ trễ lớn hơn đáng kể.
TensorFlow đáng đưa vào shortlist khi:
Không nên chọn chỉ vì “Google làm ra” hoặc vì một khóa học dùng TensorFlow.
Bạn có thể chưa cần framework deep learning nếu:
Framework là phương tiện, không phải chiến lược AI.
1. Python và NumPy cơ bản;
2. Tensor: shape, rank, dtype, axis;
3. Các phép toán và broadcasting;
4. Keras Sequential và Functional API;
5. Loss, optimizer, metrics;
6. Dataset, validation và overfitting;
7. Lưu model và chạy inference.
Sau đó mới học custom training loop, `tf.function`, distributed training, XLA và deployment.
Tự kiểm tra trước khi thực hiện
0/10 hoàn thànhDấu tích chỉ được lưu trên thiết bị này và không thay thế xác nhận của đơn vị tổ chức.
Hãy nhớ hai câu:
Hiểu shape, dtype, axis và device quan trọng hơn học thuộc API. Khi bốn thứ đó rõ ràng, TensorFlow, PyTorch hay một framework khác chỉ là những cách tổ chức cùng các nguyên lý nền tảng.
Thông tin được kiểm tra ngày 19/8/2026. API, tên sản phẩm triển khai và hướng dẫn cài đặt có thể thay đổi; hãy đối chiếu tài liệu chính thức theo phiên bản đang dùng.
Từ thành lập pháp nhân, kế toán–thuế, lao động–bảo hiểm đến visa doanh nghiệp và kết nối đối tác Việt–Hàn — KVBiz cùng mạng lưới 행정사 · 세무사 · 노무사 đồng hành từng bước.
Miễn phí bước tư vấn đầu · bảo mật thông tin
Kết nối doanh nghiệp Việt–Hàn
Tìm hiểu mạng lưới hội viên, hoạt động kết nối và cơ hội hợp tác dành cho doanh nghiệp Việt Nam tại Hàn Quốc.
Nhận bản tin KVBiz
Tin kinh tế – công nghệ – doanh nghiệp Hàn–Việt chọn lọc, gửi hằng tuần. Miễn phí, huỷ bất cứ lúc nào.
Đây là bản tóm tắt. Bài gốc: Tensor và TensorFlow là gì? Hướng dẫn nhập môn — TensorFlow Documentation. Bản quyền nội dung thuộc về nguồn gốc.