เพิ่ม Fully Connected (Dense) layers บน Convolutional base เพื่อการจำแนกประเภท (Classification)
โค้ดตัวอย่าง
print("เพิ่ม Dense layer บนสุด...")
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10))
print("สถาปัตยกรรมโมเดลสมบูรณ์:")
model.summary()
ผลลัพธ์
เพิ่ม Dense layer บนสุด
สถาปัตยกรรมโมเดลสมบูรณ์
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_3 (Conv2D) (None, 30, 30, 32) 896
max_pooling2d_2 (MaxPooling2 (None, 15, 15, 32) 0
conv2d_4 (Conv2D) (None, 13, 13, 64) 18496
max_pooling2d_3 (MaxPooling2 (None, 6, 6, 64) 0
conv2d_5 (Conv2D) (None, 4, 4, 64) 36928
flatten (Flatten) (None, 1024) 0
dense (Dense) (None, 64) 65600
dense_1 (Dense) (None, 10) 650
=================================================================
Total params: 122,570
Trainable params: 122,570
Non-trainable params: 0
_________________________________________________________________
คำอธิบาย
- Conv base output: (4, 4, 64) - 3D tensor จาก convolutional layers
- Flatten(): ราบแบนเป็น vector ขนาด 1024 (4*4*64)
- Dense(64, relu): Hidden layer 64 units
- Dense(10): Output layer 10 units (CIFAR-10 มี 10 คลาส) ไม่มี activation (logits)
- Total parameters: ~122K - ค่อนข้างเล็ก สำหรับ CIFAR-10
- Dense layers ใช้เวกเตอร์ 1D เป็น input ต้อง Flatten ก่อนเสมอ