ใน Keras, Model: “sequential” หมายถึง Sequential Model ซึ่งเป็นรูปแบบของโมเดลที่ง่ายและเหมาะสมสำหรับกรณีที่โมเดลมีการเชื่อมโยงเลเยอร์ต่างๆ ตามลำดับ (sequential layers). โมเดลประเภทนี้จะถูกสร้างขึ้นโดยการต่อ layers เข้าด้วยกันแบบ linearly (ตามลำดับหนึ่ง).
การใช้งาน Sequential Model:
- ลำดับของเลเยอร์ (Layer Order):
- ในโมเดลประเภท Sequential การเชื่อมต่อของเลเยอร์จะเป็นแบบ linear ซึ่งหมายความว่า output ของเลเยอร์หนึ่งจะเป็น input ของเลเยอร์ถัดไป.
- เลเยอร์ต่างๆ จะถูกเพิ่มเข้ามาใน model ทีละเลเยอร์ โดยการใช้คำสั่ง
add()
หรือการระบุเลเยอร์ในลิสต์ของโมเดล.
- โครงสร้าง:
- Sequential ใช้เมื่อต้องการโมเดลที่เชื่อมต่อเลเยอร์เป็นลำดับหนึ่ง เช่น การทำงานกับปัญหาการจำแนกประเภทภาพ (Image Classification) หรือปัญหาที่ข้อมูลมีลำดับชัดเจน.
- โมเดลนี้จะไม่รองรับกรณีที่ต้องการการเชื่อมต่อข้ามเลเยอร์ (เช่น Skip Connections) หรือกรณีที่โมเดลมีหลาย input/output.
ตัวอย่างของ Sequential Model:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# สร้างโมเดล Sequential
model = Sequential([
Dense(64, activation='relu', input_shape=(784,)), # Layer แรก
Dense(10, activation='softmax') # Layer ที่สอง (output)
])
ในตัวอย่างนี้:
- Layer 1: เป็น Dense layer ที่มี 64 units และใช้ ReLU เป็น activation function.
- Layer 2: เป็น Dense layer ที่ใช้ softmax activation function สำหรับการจำแนกประเภท (classification) ที่มี 10 classes.
ข้อดีของ Sequential Model:
- เรียบง่าย: เหมาะกับกรณีที่โมเดลมีการเชื่อมโยงเลเยอร์ตามลำดับอย่างชัดเจน.
- สะดวกในการใช้งาน: คุณสามารถสร้างโมเดลได้โดยไม่ต้องกังวลเกี่ยวกับการจัดการกับหลาย input/output หรือการเชื่อมต่อข้ามเลเยอร์.
ข้อจำกัดของ Sequential Model:
- ไม่รองรับการเชื่อมต่อหลาย input/output: หากคุณต้องการสร้างโมเดลที่มีหลาย input หรือหลาย output หรือมีการเชื่อมต่อข้ามเลเยอร์ (เช่น residual connections), คุณจะต้องใช้ Functional API ของ Keras.
ตัวอย่างการใช้ Sequential Model ในการสร้างโมเดล:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
# สร้างโมเดล Sequential
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)),
MaxPooling2D((2, 2)),
Flatten(),
Dense(64, activation='relu'),
Dense(1, activation='sigmoid')
])
# สรุปโครงสร้างโมเดล
model.summary()
ในตัวอย่างนี้:
- Conv2D layer: ใช้สำหรับการแปลงภาพ (convolutional operation).
- MaxPooling2D layer: ใช้สำหรับการลดขนาด (downsampling).
- Flatten layer: ใช้เพื่อแปลงข้อมูลที่เป็น 2D จาก Conv2D และ MaxPooling2D ให้เป็น 1D.
- Dense layer: เป็นเลเยอร์ fully connected ที่ใช้ในการทำนาย (prediction).
สรุป:
Sequential Model คือโมเดลที่เชื่อมโยงเลเยอร์ต่างๆ ในลำดับโดยตรงและเหมาะสำหรับปัญหาที่มีลำดับข้อมูลที่ชัดเจน เช่น การจำแนกประเภท, การทำนายข้อมูลต่อเนื่อง, หรือปัญหาที่ไม่ต้องการการเชื่อมต่อหลาย input/output. Keras ใช้ Sequential Model ในกรณีนี้เพราะมันง่ายและสะดวกในการใช้งานเมื่อไม่ต้องการโครงสร้างที่ซับซ้อน.