ในยุคปัจจุบันที่การเรียนรู้เชิงลึก (Deep Learning) กำลังเป็นที่นิยมอย่างแพร่หลาย Keras กลายเป็นหนึ่งในไลบรารีที่ได้รับความนิยมมากที่สุดสำหรับการสร้างและฝึกอบรมโมเดล Machine Learning โดยเฉพาะอย่างยิ่งเมื่อใช้งานร่วมกับ TensorFlow Keras มีอินเทอร์เฟซที่ใช้งานง่าย และยังมีเครื่องมือสองรูปแบบให้เลือกใช้ คือ Sequential API และ Functional API ในบทความนี้ เราจะพาคุณไปทำความรู้จักกับพื้นฐานของ Keras โดยเฉพาะการใช้ Functional API เพื่อสร้างโมเดลเชิงลึกที่มีความซับซ้อนยิ่งขึ้น
Keras Functional API เป็นวิธีการหนึ่งในการสร้างโมเดลใน Keras ที่ยืดหยุ่นมากกว่า Sequential API และเหมาะสำหรับการออกแบบโครงสร้างโมเดลที่มีลำดับซับซ้อน โดยสามารถใช้ในการสร้างโมเดลที่มีการแก้ไขหลาย Input หรือ Output, โครงสร้างโมเดลที่ไม่ใช่ลำดับเดียว เช่น Multi-branch, และโครงข่ายที่มีการเชื่อมต่อที่ซับซ้อนกว่าเดิม
Functional API ทำให้เราสามารถเชื่อมต่อ Layer ต่างๆ เข้าด้วยกันอย่างอิสระ โดยเริ่มจากการกำหนดอินพุตและโปรเซสทีละขั้นตอน จนกระทั่งกำหนดเอาท์พุต
from keras.layers import Input, Dense
from keras.models import Model
# กำหนด Input layer
inputs = Input(shape=(784,))
# เพิ่ม Hidden layers
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
# กำหนด Output layer
outputs = Dense(10, activation='softmax')(x)
# สร้างโมเดล
model = Model(inputs=inputs, outputs=outputs)
ในตัวอย่างโค้ดด้านบน เราได้สร้างโมเดลการจำแนกขั้นต่ำด้วย Keras โดยใช้ Functional API โมเดลนี้มีโครงสร้างเป็น Fully Connected Neural Network ที่มี 2 Hidden Layers ทุกเลเยอร์ถูกนิยามพร้อมการใช้ฟังก์ชัน `Dense` ที่ให้นิยามการเชื่อมต่อแบบ fully-connected และมีฟังก์ชันการกระตุ้น (Activation Function) เป็น `relu` สำหรับเลเยอร์ซ่อนทั้งสอง ในส่วนของ Output layer เราใช้ฟังก์ชันการกระตุ้นเป็น `softmax` เพื่อทำนายคลาสที่เหมาะสม
Functional API ไม่เพียงแต่ทำให้เราสร้างโมเดลแบบเรียงลำดับได้เท่านั้น แต่ยังสามารถประกอบโครงสร้างที่ซับซ้อนเช่น โครงข่ายที่มีการแบ่งแยก (branch) หรือการแบ่งรวม (merge) ตัวอย่างเช่น โมเดลที่มีการทำงานหลายอินพุต:
from keras.layers import concatenate
# กำหนด Input layers
input_a = Input(shape=(64,))
input_b = Input(shape=(32,))
# เพิ่ม Layers สำหรับ Input A
x = Dense(16, activation='relu')(input_a)
# เพิ่ม Layers สำหรับ Input B
y = Dense(16, activation='relu')(input_b)
# รวมกัน (Merge) Layers
combined = concatenate([x, y])
# Output
z = Dense(1, activation='sigmoid')(combined)
# สร้างโมเดล
model = Model(inputs=[input_a, input_b], outputs=z)
ในตัวอย่างนี้ เราได้สร้างโมเดลที่ประมวลผล Input สองตัวที่ต่างกันและรวมผลลัพธ์ก่อนการคาดการณ์ขั้นสุดท้าย ซึ่งสามารถนำไปใช้ในแอปพลิเคชันที่ซับซ้อน เช่น ข้อมูลการประมวลผลที่หลากหลายหรือสัญญาณที่แตกต่างกันได้
Functional API ช่วยให้ผู้ออกแบบโมเดลสามารถ:
- กำหนดโครงสร้างโมเดลที่ซับซ้อน เช่น Residual Connections หรือ Network in Network
- สร้างโมเดลที่มี Input หรือ Output หลายตัว
- สร้างโมเดลที่ซ้อนกันหลายเลเยอร์หรือการเชื่อมต่อที่ไม่สม่ำเสมอได้อย่างง่ายดาย
เมื่อโมเดลถูกสร้างขึ้นเรียบร้อยแล้ว เราสามารถใช้ฟังก์ชัน `compile` และ `fit` ของ Keras เพื่อทำการฝึกอบรมโมเดลได้ เช่นเดียวกับการใช้ Sequential API
# Compile the model
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# การฝึกอบรมโมเดล
model.fit([data_a, data_b], labels, epochs=10, batch_size=32)
Keras Functional API เป็นเครื่องมือที่ทรงพลังที่ช่วยให้เราสามารถออกแบบโมเดลที่มีโครงสร้างซับซ้อนได้ในรูปแบบที่ยืดหยุ่น นำไปสู่การสร้างและการทดลองในการทดลองวิจัยและการพัฒนาแอปพลิเคชันต่างๆ การเรียนรู้และเข้าใจการใช้งาน Functional API จะช่วยเพิ่มความสามารถในการออกแบบและสร้างโมเดลที่มีประสิทธิภาพยิ่งขึ้น
หากคุณสนใจการศึกษาด้านการเขียนโปรแกรมหรือพัฒนาโมเดล Machine Learning เพิ่มเติม คุณอาจพิจารณามาเรียนที่ EPT ที่เรามีหลักสูตรและคำแนะนำจากผู้เชี่ยวชาญที่สามารถตอบสนองความต้องการของคุณได้อย่างลงตัว.
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM