ถ้าคุณเป็นคนหนึ่งที่ให้ความสนใจในการสร้างโมเดล Machine Learning หรือ Deep Learning คงต้องเคยได้ยินชื่อของ Keras กันมาบ้าง Keras เป็นหนึ่งในไลบรารีที่ได้รับความนิยมสูงในการสร้างและพัฒนาโมเดลด้วยภาษา Python เนื่องจากมีความง่ายและทรงพลัง เหมาะสำหรับทั้งผู้เริ่มต้นและผู้เชี่ยวชาญ ในบทความนี้ เราจะพาคุณไปรู้จักกับ Sequential API ซึ่งเป็นหนึ่งใน API หลักที่ Keras นำเสนอ เรียนรู้ว่า Sequential API คืออะไร และวิธีการใช้งานผ่านโค้ดตัวอย่าง
Keras เป็นไลบรารี Open Source ที่สร้างขึ้นเพื่อช่วยให้การสร้างและทดลองโมเดล Machine Learning ง่ายขึ้น ถูกพัฒนาบน TensorFlow เป็นหลัก Keras ถูกออกแบบมาให้ใช้งานง่ายและเข้าใจได้เร็ว ทำให้ผู้ใช้สามารถทดลองโมเดลใหม่ๆ ได้อย่างรวดเร็วและมีประสิทธิภาพ
Sequential API เป็นหนึ่งใน API ที่ง่ายที่สุดใน Keras ซึ่งถูกออกแบบมาให้เหมาะสำหรับการสร้างโมเดลแบบ Sequential หรือแบบลำดับ โดยโมเดลประเภทนี้จะมีการส่งข้อมูลจากเลเยอร์หนึ่งไปยังอีกเลเยอร์หนึ่งแบบต่อเนื่องกัน เหมาะสำหรับโมเดลพื้นฐานและแบบ linear stack ของเลเยอร์
ข้อดีของการเลือกใช้ Sequential API คือความเรียบง่าย เหมาะแก่ผู้เริ่มต้นที่ต้องการเข้าใจโครงสร้างของโมเดลเชิงลึกโดยไม่จำเป็นต้องใช้โค้ดที่ซับซ้อนมากนัก
เริ่มต้นการใช้งาน Sequential API เราต้องเตรียมการติดตั้งไลบรารีที่จำเป็นก่อน
pip install tensorflow
หลังจากติดตั้งเสร็จสิ้น เราจะเริ่มต้นสร้างโมเดลอย่างง่ายด้วย Sequential API โดยการ import ไลบรารีที่จำเป็น และกำหนดเลเยอร์ต่างๆ
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# สร้างโมเดล Sequential
model = Sequential()
# เพิ่ม Layer แรกโดยกำหนดว่า input shape มีขนาด 784 (เช่น ข้อมูลภาพ 28x28 ถูกทำเป็นเวกเตอร์)
model.add(Dense(units=32, activation='relu', input_shape=(784,)))
# เพิ่ม Hidden Layer
model.add(Dense(units=64, activation='relu'))
# เพิ่ม Output Layer
model.add(Dense(units=10, activation='softmax'))
# สรุปโครงสร้างของโมเดล
model.summary()
ในโค้ดด้านบน เราได้สร้างโมเดลที่ประกอบด้วยเลเยอร์ 3 ชั้น โดยใช้ฟังก์ชั่น `add()` ในการเพิ่มเลเยอร์เข้าไปในโมเดล ฟังก์ชั่น `Dense()` ที่ใช้นี้เป็นตัวกำหนดว่าแต่ละเลเยอร์มีหน่วยประมวลผล (units) เท่าไร และใช้ฟังก์ชั่น Activation อะไรในการคำนวณผลลัพธ์
Sequential API เหมาะสำหรับการสร้างโมเดลที่มีเลเยอร์ประมวลผลเรียงต่อกันในแนวเส้นตรง เช่น โมเดลประเภท Fully Connected หรือ Feedforward Neural Networks หากคุณกำลังทำงานกับปัญหาที่มีลักษณะซับซ้อนมากขึ้น เช่น การใช้ฐานข้อมูลของภาพ เสียง ข้อความ หรือการส่งผ่านข้อมูลจากหลายแหล่งพร้อมกัน อาจต้องประยุกต์ใช้ Functional API หรือ Model Subclassing ซึ่งมีความยืดหยุ่นมากกว่า
อย่างไรก็ตาม การเริ่มต้นด้วย Sequential API จะทำให้คุณเข้าใจภาพรวมของการทำงานใน Keras ก่อน และทำให้การต่อยอดไปยัง API ที่ซับซ้อนยิ่งขึ้นไม่ใช่เรื่องยาก
เพื่อให้เห็นภาพและเข้าใจได้ชัดเจนยิ่งขึ้น เราจะทดลองใช้โมเดลที่สร้างมาเพื่อตรวจจับภาพตัวเลขในชุดข้อมูล MNIST ซึ่งเป็นชุดข้อมูลที่มีการใช้ฝึกฝนโมเดลกันอย่างแพร่หลาย
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
# โหลดข้อมูล MNIST
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# แปลงรูปร่างข้อมูลและทำ normalize
x_train = x_train.reshape((60000, 784)).astype('float32') / 255
x_test = x_test.reshape((10000, 784)).astype('float32') / 255
# One-hot encoding สำหรับ label
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
# คอมไพล์โมเดล
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# ฝึกฝนโมเดล
model.fit(x_train, y_train, epochs=10, batch_size=128, validation_split=0.2)
# ทดสอบโมเดล
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'Accuracy: {test_acc}')
แม้ Sequential API จะง่าย แต่ก็มีข้อจำกัดในการขาดความยืดหยุ่นในการสร้างโมเดลที่ซับซ้อนกว่า และอาจจะไม่เหมาะกับทุกกรณีใช้งาน โดยเฉพาะเมื่อคุณต้องการใช้เครือข่ายเส้นประสาทที่มีเส้นทางหลายเส้นทางในเวลาเดียวกัน
ดังนั้น การเรียนรู้และเข้าใจการใช้งานอื่นๆ เช่น Functional API หรือ Model Subclassing จะช่วยให้คุณสามารถสร้างและปรับแต่งโมเดลได้มากยิ่งขึ้น
การเข้าใจเครื่องมืออย่าง Keras จะเปิดโอกาสให้คุณพัฒนาโมเดลที่ซับซ้อนและสอดคล้องกับปัญหาที่แท้จริงในโลกของการพัฒนา AI และ Machine Learning และการศึกษาเกี่ยวกับโปรแกรมมิ่ง เช่นที่ EPT (Expert-Programming-Tutor) จะช่วยเปิดประสบการณ์และความรู้ของคุณเชิงลึกยิ่งขึ้น
การศึกษาและฝึกฝนทำให้เราเติบโตในสายงานนี้ได้อย่างมีประสิทธิภาพ และไม่ว่าใครที่ต้องการสร้างสรรค์สิ่งใหม่ๆ บนพื้นฐานของ AI ก็สามารถเริ่มต้นได้ที่นี่
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง 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