เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การสร้าง Autoencoder

Autoencoder มีการนำไปใช้งานที่น่าสนใจหลายด้าน เช่น การตรวจจับความผิดปกติ หรือการลดสัญญาณรบกวนในภาพ หลักการทำงานคือสร้างผลลัพธ์ให้เหมือนกับข้อมูลที่ป้อนเข้าไปมากที่สุด โดยข้อมูลจะถูกบีบอัดลงในพื้นที่มิติต่ำกว่าซึ่งเรียกว่าขั้นตอน encode จากนั้นโมเดลจะเรียนรู้ที่จะ decode ข้อมูลกลับสู่รูปแบบเดิม

ในแบบฝึกหัดนี้จะทำการ encode และ decode ชุดข้อมูล MNIST ของตัวเลขลายมือ โดย hidden layer จะ encode ภาพให้อยู่ในรูปแบบ 32 มิติ ซึ่งโดยปกติแล้วภาพต้นฉบับประกอบด้วย 784 พิกเซล (28 x 28) กล่าวคือ autoencoder จะเรียนรู้การแปลงภาพ 784 พิกเซลเดิมให้เป็นภาพที่บีบอัดแล้ว 32 พิกเซล และเรียนรู้วิธีใช้ representation ที่ encode ไว้นั้นเพื่อสร้างภาพ 784 พิกเซลต้นฉบับขึ้นมาใหม่

โมเดล Sequential และเลเยอร์ Dense พร้อมให้ใช้งานแล้ว

มาเริ่มสร้าง autoencoder กันเลย!

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Deep Learning เบื้องต้นด้วย Keras

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้างโมเดล Sequential
  • เพิ่ม dense layer ที่มีจำนวนนิวรอนเท่ากับมิติของภาพที่ผ่านการ encode และกำหนด input_shape ให้เท่ากับจำนวนพิกเซลของภาพต้นฉบับ
  • เพิ่มเลเยอร์สุดท้ายที่มีจำนวนนิวรอนเท่ากับจำนวนพิกเซลของภาพ input
  • Compile autoencoder โดยใช้ adadelta เป็น optimizer และใช้ binary_crossentropy เป็น loss จากนั้นแสดงสรุปโมเดล

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Start with a sequential model
autoencoder = ____

# Add a dense layer with input the original image pixels and neurons the encoded representation
autoencoder.add(____(____, input_shape=(____, ), activation="relu"))

# Add an output layer with as many neurons as the orginal image pixels
autoencoder.add(____(____, activation = "sigmoid"))

# Compile your model with adadelta
autoencoder.compile(optimizer = ____, loss = ____)

# Summarize your model structure
____
แก้ไขและรันโค้ด