คอมไพล์และฝึกโมเดล CNN (Convolutional Neural Network) สำหรับจำแนกภาพ
โค้ดตัวอย่าง
print("คอมไพล์โมเดล...")
model.compile(
optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy']
)
print("ฝึกโมเดลให้เข้ากับข้อมูล...")
history = model.fit(
train_images, train_labels,
epochs=10,
validation_data=(test_images, test_labels)
)
ผลลัพธ์
คอมไพล์โมเดล
ฝึกโมเดลให้เข้ากับข้อมูล...
Epoch 1/10
1563/1563 [==============================] - 70s 44ms/step - loss: 1.7408 - accuracy: 0.3557 - val_loss: 1.2260 - val_accuracy: 0.5509
Epoch 2/10
1563/1563 [==============================] - 67s 43ms/step - loss: 1.1928 - accuracy: 0.5751 - val_loss: 1.0800 - val_accuracy: 0.6159
...
Epoch 10/10
1563/1563 [==============================] - 66s 42ms/step - loss: 0.5913 - accuracy: 0.7953 - val_loss: 0.8884 - val_accuracy: 0.7053
คำอธิบาย
- Compile: กำหนด optimizer, loss, metrics ก่อนฝึก
- Fit: ฝึกโมเดล 10 epochs บน train_images, train_labels
- validation_data: ตรวจสอบประสิทธิภาพบน test set ทุก epoch
- Training accuracy: 35% -> 79% | Validation accuracy: 55% -> 70%
- CNN เหมาะสำหรับภาพ เพราะ Conv2D ดึง feature ท้องถิ่น (edges, textures) ได้ดี