Trước khi huấn luyện, mô hình TensorFlow cần được biên dịch với optimizer, loss function, và metrics.
Mã ví dụ
print("Đang biên dịch mô hình...")
model.compile(
optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy']
)
print("Kiến trúc mô hình:")
model.summary()
Kết quả
Đang biên dịch mô hình Kiến trúc mô hình Model: "sequential_2" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= rescaling_1 (Rescaling) (None, 180, 180, 3) 0 conv2d_6 (Conv2D) (None, 180, 180, 16) 448 max_pooling2d_4 (MaxPooling2 (None, 90, 90, 16) 0 conv2d_7 (Conv2D) (None, 90, 90, 32) 4640 max_pooling2d_5 (MaxPooling2 (None, 45, 45, 32) 0 conv2d_8 (Conv2D) (None, 45, 45, 64) 18496 max_pooling2d_6 (MaxPooling2 (None, 22, 22, 64) 0 flatten_1 (Flatten) (None, 30976) 0 dense_2 (Dense) (None, 128) 3965056 dense_3 (Dense) (None, 5) 645 ================================================================= Total params: 3,989,285 Trainable params: 3,989,285 Non-trainable params: 0 _________________________________________________________________
Giải thích
- optimizer='adam': Adam optimizer (adaptive moment estimation), phổ biến, hiệu quả.
- loss=SparseCategoricalCrossentropy(from_logits=True): Hàm mất mát cho phân loại đa lớp với nhãn integer (0,1,2...).
from_logits=Truenghĩa là mô hình xuất ra logits (chưa qua softmax). - metrics=['accuracy']: Theo dõi độ chính xác khi train/validate.
- model.summary(): In cấu trúc mô hình, output shape, số tham số.
- Mô hình: 3 khối Conv2D + MaxPooling, Flatten, Dense(128), Dense(5 classes).