Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีใช้ TensorFlow กำหนดโมเดลสำหรับชุดข้อมูล MNIST


บทนำเกี่ยวกับ TensorFlow

TensorFlow เป็นเฟรมเวิร์กการเรียนรู้ของเครื่องที่พัฒนาโดย Google เป็นโค้ดเปิด (open-source) ใช้ร่วมกับ Python เพื่อนำอัลกอริทึม การเรียนรู้เชิงลึก (deep learning) และอื่นๆ มาใช้งาน ได้รับการเพิ่มประสิทธิภาพเพื่อคำนวณทางคณิตศาสตร์ที่ซับซ้อนได้อย่างรวดเร็ว เนื่องจากใช้ NumPy และอาร์เรย์หลายมิติ (multi-dimensional arrays) ซึ่งเรียกอีกอย่างว่า "เทนเซอร์" (tensors) เฟรมเวิร์กนี้รองรับการทำงานกับโครงข่ายประสาทเทียมเชิงลึก (deep neural networks)

การติดตั้ง TensorFlow

สามารถติดตั้งแพ็กเกจ tensorflow บน Windows ได้ด้วยคำสั่ง:

pip install tensorflow

ความเข้าใจเกี่ยวกับ Tensor และ Keras

Tensor เป็นโครงสร้างข้อมูลใน TensorFlow ใช้เชื่อมต่อขอบในแผนภาพกระแสข้อมูล (Data flow graph) เทนเซอร์ก็คืออาร์เรย์หลายมิติหรือรายการ (list)

Keras เป็น API การเรียนรู้เชิงลึกระดับสูง เขียนด้วย Python มีอินเตอร์เฟซที่ใช้งานง่าย ช่วยแก้ปัญหาการเรียนรู้ของเครื่องได้อย่างรวดเร็ว ทำงานบน TensorFlow และอยู่ภายในแพ็กเกจ TensorFlow แล้ว สามารถนำเข้าได้ด้วย:

import tensorflow as tf
from tensorflow import keras

ตัวอย่าง: การสร้างโมเดล Sequential สำหรับ MNIST

ใช้ Google Colaboratory (Colab) รันโค้ด Python บนเบราว์เซอร์ ฟรี ไม่ต้องตั้งค่า เข้าถึง GPU ได้ ฟรี สร้างบน Jupyter Notebook

print("กำลังกำหนดโมเดล Sequential")
def create_model():
    model = tf.keras.models.Sequential([
        keras.layers.Dense(512, activation='relu', input_shape=(784,)),
        keras.layers.Dropout(0.2),
        keras.layers.Dense(10)
    ])
    model.compile(optimizer='adam',
                  loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),
                  metrics=[tf.metrics.SparseCategoricalAccuracy()])
    return model

print("กำลังสร้างอินสแตนซ์ของโมเดล")
model = create_model()
print("แสดงสถาปัตยกรรมของโมเดล Sequential")
model.summary()

ที่มาโค้ด: TensorFlow Tutorials

ผลลัพธ์

วิธีใช้ TensorFlow กำหนดโมเดลสำหรับชุดข้อมูล MNIST

คำอธิบาย

  • สร้างโมเดล Sequential ด้วย Keras
  • เพิ่มเลเยอร์ Dense (เลเยอร์เชื่อมต่อเต็มรูปแบบ)
  • คอมไพล์โมเดลด้วย optimizer, loss function และ metrics
  • สร้างอินสแตนซ์ของโมเดล
  • แสดงรายละเอียดโมเดลด้วยเมธอด summary()