บทนำ
เครือข่ายประสาทเทียมแบบ Convolutional Neural Network (CNN) ประกอบด้วยเลเยอร์หลัก 3 ประเภท ได้แก่ Convolutional layers, Pooling layers และ Dense layers ซึ่งเหมาะสำหรับงานจดจำรูปภาพ (image recognition) เป็นพิเศษ
บทความนี้จะสาธิตวิธีสร้าง convolutional base (ส่วนสกัดลักษณะเฉพาะ) ด้วย Keras Sequential API บน Google Colab ซึ่งให้สภาพแวดล้อมรัน Python ฟรีพร้อม GPU
โค้ดตัวอย่าง
print("Creating the convolutional base")
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
print("Description of architecture is")
model.summary()ผลลัพธ์ (Model Summary)
Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 30, 30, 32) 896 max_pooling2d (MaxPooling2D) (None, 15, 15, 32) 0 conv2d_1 (Conv2D) (None, 13, 13, 64) 18,496 max_pooling2d_1 (MaxPooling2D) (None, 6, 6, 64) 0 conv2d_2 (Conv2D) (None, 4, 4, 64) 36,928 ================================================================= Total params: 56,320 Trainable params: 56,320 Non-trainable params: 0
คำอธิบาย
- โมเดลถูกสร้างด้วย
Sequential()และเพิ่มเลเยอร์ด้วยadd() - รูปแบบมาตรฐาน: ซ้อน
Conv2DและMaxPooling2Dสลับกัน - ขนาดอินพุต
(32, 32, 3)ตรงกับรูปภาพ CIFAR-10 (32×32 พิกเซล, 3 ช่องสี) - พารามิเตอร์แรกของ
Conv2D(32, 64) คือจำนวนฟิลเตอร์/ช่องลึกของเอาต์พุต - ขนาดพื้นที่ (width/height) ลดลงทุกครั้งที่ผ่าน Conv/Pooling
- รวมพารามิเตอร์ทั้งหมด 56,320 ตัว (ทั้งหมด trainable)
ข้อสังเกตเพิ่มเติม
Convolutional base นี้เป็นส่วน "หัว" ที่สกัดฟีเจอร์จากภาพ ก่อนจะต่อด้วย Dense layers เพื่อทำ classification จริง ๆ ซึ่งมักจะเพิ่ม Flatten() และ Dense layers ต่อท้าย
บทนำ
เครือข่ายประสาทเทียมแบบ Convolutional Neural Network (CNN) ประกอบด้วยเลเยอร์หลัก 3 ประเภท ได้แก่ Convolutional layers, Pooling layers และ Dense layers ซึ่งเหมาะสำหรับงานจดจำรูปภาพ (image recognition) เป็นพิเศษ
บทความนี้จะสาธิตวิธีสร้าง convolutional base (ส่วนสกัดลักษณะเฉพาะ) ด้วย Keras Sequential API บน Google Colab ซึ่งให้สภาพแวดล้อมรัน Python ฟรีพร้อม GPU
โค้ดตัวอย่าง
print("Creating the convolutional base")
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
print("Description of architecture is")
model.summary()ผลลัพธ์ (Model Summary)
Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 30, 30, 32) 896 max_pooling2d (MaxPooling2D) (None, 15, 15, 32) 0 conv2d_1 (Conv2D) (None, 13, 13, 64) 18,496 max_pooling2d_1 (MaxPooling2D) (None, 6, 6, 64) 0 conv2d_2 (Conv2D) (None, 4, 4, 64) 36,928 ================================================================= Total params: 56,320 Trainable params: 56,320 Non-trainable params: 0
คำอธิบาย
- โมเดลถูกสร้างด้วย
Sequential()และเพิ่มเลเยอร์ด้วยadd() - รูปแบบมาตรฐาน: ซ้อน
Conv2DและMaxPooling2Dสลับกัน - ขนาดอินพุต
(32, 32, 3)ตรงกับรูปภาพ CIFAR-10 (32×32 พิกเซล, 3 ช่องสี) - พารามิเตอร์แรกของ
Conv2D(32, 64) คือจำนวนฟิลเตอร์/ช่องลึกของเอาต์พุต - ขนาดพื้นที่ (width/height) ลดลงทุกครั้งที่ผ่าน Conv/Pooling
- รวมพารามิเตอร์ทั้งหมด 56,320 ตัว (ทั้งหมด trainable)
ข้อสังเกตเพิ่มเติม
Convolutional base นี้เป็นส่วน "หัว" ที่สกัดฟีเจอร์จากภาพ ก่อนจะต่อด้วย Dense layers เพื่อทำ classification จริง ๆ ซึ่งมักจะเพิ่ม Flatten() และ Dense layers ต่อท้าย