Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีสร้าง Convolutional Base ด้วย TensorFlow และ Python

บทนำ

เครือข่ายประสาทเทียมแบบ 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 Base ด้วย TensorFlow และ Python

บทนำ

เครือข่ายประสาทเทียมแบบ 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 ต่อท้าย