Một tensor là một cấu trúc dữ liệu dùng để lưu trữ giá trị số (giống như mảng, ma trận) với nhiều chiều.
Tensor Rank | Mô tả | Ví dụ dữ liệu | Shape |
---|---|---|---|
0-D | Số vô hướng (scalar) | 7 | () |
1-D | Vector (một chiều) | [1, 2, 3] | (3,) |
2-D | Ma trận (matrix) | [[1,2],[3,4]] | (2,2) |
3-D | Mảng khối (cube) | Ảnh màu RGB | (28,28,3) |
4-D | Dữ liệu batch ảnh | Batch ảnh | (32,28,28,3) |
n-D | Cao hơn nữa | Video, âm thanh... | ... |
import tensorflow as tf
# Tạo tensor 2D
t = tf.constant([[1, 2, 3], [4, 5, 6]])
print("Tensor:n", t)
print("Shape:", t.shape) # (2, 3)
print("Rank:", tf.rank(t)) # 2
print("Dtype:", t.dtype) # int32
# Tạo từ giá trị cụ thể
a = tf.constant([1, 2, 3]) # rank 1
b = tf.constant([[1.0, 2.0], [3.0, 4.0]]) # rank 2
# Tạo tensor zeros hoặc ones
zeros = tf.zeros([2, 3])
ones = tf.ones([3, 3])
# Tạo tensor ngẫu nhiên
rand = tf.random.uniform([2, 2])
# Reshape
x = tf.reshape(tf.range(9), (3, 3)) # từ [0...8] thành (3,3)
# Truy cập phần tử
print(x[0, 1]) # phần tử dòng 0, cột 1
# Cộng, trừ, nhân
a = tf.constant([[1, 2], [3, 4]])
b = tf.constant([[5, 6], [7, 8]])
print(tf.add(a, b))
print(tf.matmul(a, b)) # nhân ma trận
Giả sử bạn có một bức ảnh màu RGB kích thước 64x64:
image = tf.random.uniform(shape=(64, 64, 3)) # 3 kênh màu
print(image.shape) # (64, 64, 3)
Với 100 bức ảnh như vậy, bạn sẽ có tensor 4 chiều:
batch = tf.random.uniform(shape=(100, 64, 64, 3))
print(batch.shape) # (100, 64, 64, 3)
Thuộc tính | Ý nghĩa |
---|---|
tf.rank(t) | Số chiều (rank) |
t.shape | Kích thước từng chiều |
t.dtype | Kiểu dữ liệu (int32 , float32 ,...) |
TensorFlow là một thư viện mã nguồn mở mạnh mẽ do Google phát triển, dùng để xây dựng và huấn luyện các mô hình học máy (machine learning) và học sâu (deep learning). Dưới đây là hướng dẫn chi tiết cho người mới bắt đầu:
pip install tensorflow
✅ Nếu dùng GPU:
pip install tensorflow-gpu
Bạn nên cài trong môi trường ảo (virtualenv hoặc conda
).
import tensorflow as tf
# Tạo một tensor
a = tf.constant([[1, 2], [3, 4]])
print(a)
# Tính toán đơn giản
b = tf.constant([[5, 6], [7, 8]])
c = tf.add(a, b)
print(c)
Ví dụ phân loại số viết tay MNIST:
import tensorflow as tf
from tensorflow.keras import layers, models
# Tải dữ liệu MNIST
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train = x_train / 255.0 # Chuẩn hóa
x_test = x_test / 255.0
# Xây dựng mô hình
model = models.Sequential([
layers.Flatten(input_shape=(28, 28)),
layers.Dense(128, activation='relu'),
layers.Dropout(0.2),
layers.Dense(10, activation='softmax')
])
# Biên dịch và huấn luyện
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
Chủ đề | Mục tiêu |
---|---|
Tensor (tensor rank, shape...) | Hiểu rõ cách dữ liệu được biểu diễn |
Autograd (tf.GradientTape ) | Tự động tính đạo hàm |
Keras | API giúp tạo mô hình dễ dàng |
Custom layers & loss | Tự viết lớp/mất mát riêng |
TF Data Pipeline | Đọc dữ liệu hiệu quả |
SavedModel | Lưu & deploy mô hình |