โมเดลใน TensorFlow ต้องคอมไพล์ก่อนฝึก โดยระบุ optimizer, loss function, และ metrics
โค้ดตัวอย่าง
print("กำลังคอมไพล์โมเดล...")
model.compile(
optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy']
)
print("สถาปัตยกรรมโมเดล:")
model.summary()
ผลลัพธ์ตัวอย่าง
กำลังคอมไพล์โมเดล
สถาปัตยกรรมโมเดล
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
_________________________________________________________________
คำอธิบาย
- optimizer='adam': Adam optimizer ปรับ learning rate อัตโนมัติ ยอดนิยม
- loss=SparseCategoricalCrossentropy: Loss function สำหรับ classification หลายคลาส (label เป็น integer)
- from_logits=True: โมเดลไม่มี softmax activation ท้ายสุด loss จะคำนวณ softmax เอง (เสถียรทางตัวเลขกว่า)
- metrics=['accuracy']: แสดง accuracy ระหว่างฝึก
- model.summary(): แสดงโครงสร้าง layer, output shape, จำนวน parameters