การพัฒนาโมเดลปัญญาประดิษฐ์ (AI) โดยเฉพาะในการเรียนรู้เชิงลึก (Deep Learning) ได้รับความนิยมอย่างมากในปัจจุบัน หนึ่งในเครื่องมือที่ใช้กันอย่างแพร่หลายคือ Keras ซึ่งเป็นไลบรารีสำหรับการพัฒนาโมเดล AI ที่มีประสิทธิภาพและใช้งานง่าย Keras มีสองวิธีหลักในการสร้างโมเดล คือการใช้ Sequential API และ Functional API ในบทความนี้เราจะมาทำความรู้จักและเรียนรู้การสร้างโมเดลด้วย Functional API ซึ่งมีความยืดหยุ่นสูงกว่า Sequential API
Functional API ใน Keras ช่วยให้สามารถสร้างสถาปัตยกรรมของโมเดลที่ซับซ้อนขึ้นได้ ด้วยการรองรับการรวมข้อมูล (merging), การสร้างเลเยอร์ที่มีหลายอินพุตและเอาท์พุต และการสร้างเครือข่ายที่ไม่เป็นลำดับตรง (non-sequential networks) ทำให้คุณสามารถสร้างโมเดลที่ขยายขีดความสามารถของคุณ ยกตัวอย่างเช่น, โมเดลที่มีเส้นทางเชื่อมโยงหลายสาย หรือโมเดลที่แสดงถึงการรวมข้อมูลจากหลากหลายแหล่ง
มาเริ่มกันด้วยตัวอย่างการสร้างโมเดลที่ง่ายๆ ด้วย Keras Functional API กัน
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model
# กำหนดชั้นข้อมูลอินพุต
inputs = Input(shape=(784,))
# เพิ่มชั้นที่ซับซ้อน
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
# กำหนดชั้นเอาท์พุต
outputs = Dense(10, activation='softmax')(x)
# สร้างโมเดล
model = Model(inputs=inputs, outputs=outputs)
# สรุปโครงสร้างโมเดล
model.summary()
ในตัวอย่างข้างต้น เราเริ่มด้วยการสร้างชั้นข้อมูลอินพุต (Input layer) โดยใช้ฟังก์ชัน `Input()`. จากนั้น เราจึงสร้างเครือข่ายเชิงเส้นตรง (linear path) โดยการเชื่อมต่อชั้นต่างๆ (`Dense`) เข้าด้วยกัน สุดท้าย เราสร้างวัตถุโมเดล (Model object) ที่สรุปความสัมพันธ์ของข้อมูลอินพุตและเอาท์พุต ซึ่งสามารถพร้อมใช้งานในการฝึกโมเดล
หนึ่งในตัวอย่างที่นิยมใช้ Keras Functional API คือการสร้าง Convolutional Neural Network (CNN) ซึ่งต้องการการรวมข้อมูลจากช่องทางต่างๆ เช่น ข้อมูลภาพจากหลายมุมมอง หรือการเชื่อมต่อเครือข่ายไปยังหลายกัน
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, concatenate
# ชั้นข้อมูลอินพุตสองบล็อค
input_a = Input(shape=(32, 32, 3))
input_b = Input(shape=(32, 32, 3))
# โครงข่ายโมเดลแรก
x1 = Conv2D(32, (3, 3), activation='relu')(input_a)
x1 = MaxPooling2D((2, 2))(x1)
x1 = Flatten()(x1)
# โครงข่ายโมเดลที่สอง
x2 = Conv2D(32, (3, 3), activation='relu')(input_b)
x2 = MaxPooling2D((2, 2))(x2)
x2 = Flatten()(x2)
# รวมผลลัพธ์จากโมเดลทั้งสอง
combined = concatenate([x1, x2])
# ชั้นเอาท์พุต
z = Dense(64, activation='relu')(combined)
z = Dense(10, activation='softmax')(z)
# สร้างโมเดลหลัก
model = Model(inputs=[input_a, input_b], outputs=z)
model.summary()
ในการสร้าง CNN นี้ เราได้รวมข้อมูลจากโมเดลสองเครือข่ายเข้าด้วยกันโดยใช้ฟังก์ชัน `concatenate` ซึ่งจะประโยชน์ในงานที่ข้อมูลจากแหล่งต่างๆมีการเชื่อมโยง
การเรียนรู้และเข้าใจการสร้างโมเดลด้วย Keras Functional API จะช่วยให้คุณสามารถพัฒนาโมเดลที่มีประสิทธิภาพยิ่งขึ้นสำหรับงานที่ซับซ้อน ลองนำความรู้ที่ได้จากบทความนี้ไปประยุกต์ใช้ในการพัฒนาโมเดลของคุณเอง และถ้าหากคุณสนใจการเรียนรู้เชิงลึกในระดับที่สูงขึ้น สามารถเข้ามาทำความรู้จักกับ Expert-Programming-Tutor (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