ใช้ Tensorflow จำแนกข้อมูลด้วยเทคนิค Neural network

ก่อนอื่นต้องบอกเลยว่าผมเป็น web developer มีความรู้เรื่อง Machine learning (ML) เบื้องต้นเท่านั้น แต่เนื่องจากมีความจำเป็นต้องใช้ ML ในการแข่ง hackathon รายการนึง ผมเลยเข้ามาทำความรู้จักกับ Tensorflow …

ในบทความนี้เป็นภาพรวมของการใช้ Tensoflow จำแนกข้อมูลชุดแต่งกาย โดยเราจะมีการสร้างสร้างโมเดล และใช้โมเดลที่สร้างจำแนกข้อมูลเสื้อผ้า รองเท้า ถ้าเปรียบเทียบกับการเขียนโปรแกรม นี่เปรียบเสมือนเพียงการเขียน Hello world

ข้อมูลจะใช้ dataset Fashion MNIST โดยจะมี 70000 รูป และแบ่งเป็น 10 ประเภท แต่ละรูปมีความละเอียด 28x28 pixels

Fashion-MNIST samples (by Zalando, MIT License).

ข้อมูลทั้งหมดจาก 70,000 เราจะแบ่งข้อมูลสำหรับใช้ train โมเดล 60000 รูป และใช้ test (ทดสอบความถูกต้องของโมเดล) 10,000 รูป

Fashion MNIST เราสามารถนำมาใช้งานได้ผ่าน tensorflow เลยด้วย เพราะชุดข้อมูลนี้เป็นชุดข้อมูลเริ่มต้นที่เอาไว้สำหรับให้เรามาลองเล่นกับอัลกอริทึมของเรา และเอาไว้สำหรับให้เราเริ่มต้นทดลองทำ ไว้เทส และดีบัคโค้ด

ต่อไปเราจะทำการเตรียมข้อมูลกันนะครับ โดยชุดโค้ดข้างล่างนี้จะแบ่งออกเป็น 3 เรื่องคือ 1 import libs 2 โหลดข้อมูล และ 3 สำรวจข้อมูล

จากรูปจะเราจะเห็นว่าค่าของ pixel จะอยู่ในช่วง 0–255 เราจะทำการแปลงข้อมูล pixel ให้อยู่ในช่วง 0–1 ทั้งข้อมูลสำหรับ train และ test

จากนั้นลองสำรวจรูปดูอีกครั้ง

ขั้นตอนต่อมาเราะ map แต่ละ label ให้เป็นชื่อตามรูปที่แสดง ละรูปจะมีได้ 1 label โดยที่มีทั้งหมด 10 label มีค่าคือ 0–9 ดังนั้นเราจะกำหนดชื่อให้แต่ละ label ด้วยการสร้าง class_names ไว้ map กับ label ของข้อมูล

ต่อมาเราจะลองดูว่าที่เรา map label ให้เป็นชื่อนั้น ผลเป็นอย่างไร เราจะลองแสดงรูปจำนวนนึงพร้อมชื่อ (map label)

จบขั้นตอนนี้เป็นเพียงส่วนของการเตรียมและตรวจสอบข้อมูล ขั้นตอนต่อไปเราจะทำการสร้าง model

การสร้างโมเดล neural network

เราจะใช้เทคนิค neural network ซึ่งเราจะต้องทำการตั้งค่า layers และการ compile โมเดล

หลังจากตั้งค่าให้ model แล้วเราจะใช้ .fit เพื่อเป็นการ train ตัว model ซึ่งจะต้องส่งชุด train_images, train_labels และ epochs

As the model trains, the loss and accuracy metrics are displayed. This model reaches an accuracy of about 0.88 (or 88%) on the training data.

ในการ trains จะมีผลแสดงความผิดพลาด (loss) และความถูกต้อง (accuracy) จากการเทรนตามตัวอย่างนี้ แสดงรอบสุดท้ายเราได้ความถูกต้อง 0.91 หรือ 91%

จากเทรนโมเดลเสร็จแล้ว เราจะนำชุดข้อมูล 10,000 รูป ที่เตรียมไว้สำหรับ test ตัวโมเดล จะใช้ .evaluate เพื่อทดสอบผลกับข้อมูล test

ผลจากการ test โมเดล เราได้ค่าความถูกต้อง 88%

หลังจาก trains โมเดลและ test โมเดลแล้ว เราสามารถลองทดสอบโมเดลกับแต่ละรูปได้ จากโค้ดข้างล่างเราจะลองดูผล predict ของโมเดลที่ 100 (index 99) จากโค้ดตามนี้

หรือเราจะแสดงผลการ predict หลายๆรูปเลย ตามนี้

Output ตามรูปข้างบน รูปที่เป็นสีแดง คือรูปที่ predict ผิดพลาด ซึ่งผลลัพธ์ที่ถูกต้องจะอยู่ในวงเล็บครับ

Credit https://www.tensorflow.org/tutorials/keras/basic_classification

จากการศึกษา tensorflow วันแรกของผม ก็ยังไม่สามารถลงรายละเอียดบางส่วนได้ สามารถอธิบายได้แต่ภาพรวมการใช้งาน tensorflow แต่ผมจะหาเวลารีบทำความเข้าใจในเร็วๆนี้ ถ้ามีคำถามอะไรสามารถถามได้เลยครับ

Web developer, Full stack developer, React, Nextjs, Nodejs and Golang

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store