ตัวอย่าง TensorFlow
บทช่วยสอนนี้ออกแบบมาเพื่อให้เจาะลึกเข้าไปใน TensorFlow ได้อย่างง่ายดายผ่านตัวอย่างต่างๆ เพื่อให้ง่ายต่อการอ่าน จะมีทั้งโน้ตบุ๊กและซอร์สโค้ดพร้อมคำอธิบายสำหรับทั้ง TF v1 และ v2
เหมาะสำหรับผู้เริ่มต้นที่ต้องการค้นหาตัวอย่างที่ชัดเจนและกระชับเกี่ยวกับ TensorFlow นอกจากการใช้งาน TensorFlow แบบ 'ดิบ' แบบดั้งเดิมแล้ว คุณยังสามารถค้นหาแนวทางปฏิบัติ TensorFlow API ล่าสุดได้ (เช่น layers
, estimator
, dataset
, ... )
อัปเดต (05/16/2020): ย้ายตัวอย่างเริ่มต้นทั้งหมดไปที่ TF2 สำหรับตัวอย่าง TF v1: ตรวจสอบที่นี่
ดัชนีบทช่วยสอน
0 - ข้อกำหนดเบื้องต้น
- ความรู้เบื้องต้นเกี่ยวกับการเรียนรู้ของเครื่อง
- ข้อมูลเบื้องต้นเกี่ยวกับชุดข้อมูล MNIST
1 - บทนำ
- สวัสดีชาวโลก (โน๊ตบุ๊ค) ตัวอย่างง่ายๆ ในการเรียนรู้วิธีพิมพ์ "hello world" โดยใช้ TensorFlow 2.0+
- การใช้งานขั้นพื้นฐาน (โน้ตบุ๊ก) ตัวอย่างง่ายๆ ที่ครอบคลุมการดำเนินการพื้นฐานของ TensorFlow 2.0+
2 - โมเดลพื้นฐาน
- การถดถอยเชิงเส้น (สมุดบันทึก) ใช้การถดถอยเชิงเส้นด้วย TensorFlow 2.0+
- การถดถอยโลจิสติก (สมุดบันทึก) ใช้ Logistic Regression ด้วย TensorFlow 2.0+
- Word2Vec (การฝังคำ) (โน้ตบุ๊ก) สร้างโมเดลการฝังคำ (Word2Vec) จากข้อมูล Wikipedia ด้วย TensorFlow 2.0+
- GBDT (ต้นไม้การตัดสินใจแบบไล่ระดับที่เพิ่มขึ้น) (โน้ตบุ๊ก) ใช้แผนผังการตัดสินใจแบบไล่ระดับด้วย TensorFlow 2.0+ เพื่อทำนายมูลค่าบ้านโดยใช้ชุดข้อมูล Boston Housing
3 - โครงข่ายประสาทเทียม
กำกับดูแล
- โครงข่ายประสาทเทียมอย่างง่าย (โน้ตบุ๊ก) ใช้ API 'เลเยอร์' และ 'แบบจำลอง' ของ TensorFlow 2.0 เพื่อสร้างโครงข่ายประสาทเทียมอย่างง่ายเพื่อจัดประเภทชุดข้อมูลหลัก MNIST
- Simple Neural Network (ระดับต่ำ) (โน้ตบุ๊ก) การใช้งานดิบของโครงข่ายประสาทเทียมอย่างง่ายเพื่อจำแนกชุดข้อมูลหลัก MNIST
- โครงข่ายประสาทเทียมแบบ Convolutional (โน้ตบุ๊ก) ใช้ API "เลเยอร์" และ "โมเดล" ของ TensorFlow 2.0+ เพื่อสร้างโครงข่ายประสาทเทียมแบบหมุนวนเพื่อจัดประเภทชุดข้อมูลหลัก MNIST
- Convolutional Neural Network (ระดับต่ำ) (โน้ตบุ๊ก) การใช้งานเครือข่ายประสาทเทียมแบบดิบเพื่อจัดประเภทชุดข้อมูลหลัก MNIST
- โครงข่ายประสาทเทียมที่เกิดซ้ำ (LSTM) (โน้ตบุ๊ก) สร้างโครงข่ายประสาทเทียมที่เกิดซ้ำ (LSTM) เพื่อจัดประเภทชุดข้อมูลหลัก MNIST โดยใช้ API 'เลเยอร์' และ 'แบบจำลอง' ของ TensorFlow 2.0
- โครงข่ายประสาทเทียมแบบสองทิศทาง (LSTM) (โน้ตบุ๊ก) สร้างโครงข่ายประสาทเทียมที่เกิดซ้ำแบบสองทิศทาง (LSTM) เพื่อจัดประเภทชุดข้อมูลหลัก MNIST โดยใช้ API 'เลเยอร์' และ 'โมเดล' ของ TensorFlow 2.0+
- โครงข่ายประสาทเทียมแบบไดนามิก (LSTM) (โน้ตบุ๊ก) สร้างโครงข่ายประสาทเทียมที่เกิดซ้ำ (LSTM) ที่ทำการคำนวณแบบไดนามิกเพื่อจัดประเภทลำดับของความยาวผันแปรได้ โดยใช้ API 'เลเยอร์' และ 'แบบจำลอง' ของ TensorFlow 2.0+
ไม่ได้รับการดูแล
- โปรแกรมเข้ารหัสอัตโนมัติ (โน้ตบุ๊ก) สร้างตัวเข้ารหัสอัตโนมัติเพื่อเข้ารหัสรูปภาพในมิติที่ต่ำกว่าและสร้างใหม่
- DCGAN (Deep Convolutional Generative Adversarial Networks) (โน้ตบุ๊ก) สร้าง Deep Convolutional Generative Adversarial Network (DCGAN) เพื่อสร้างภาพจากสัญญาณรบกวน
4 - ยูทิลิตี้
- บันทึกและกู้คืนโมเดล (โน้ตบุ๊ก) บันทึกและกู้คืนโมเดลด้วย TensorFlow 2.0+
- สร้างเลเยอร์และโมดูลแบบกำหนดเอง (โน้ตบุ๊ก) เรียนรู้วิธีสร้างเลเยอร์/โมดูลของคุณเอง และรวมเข้ากับโมเดล TensorFlow 2.0+
- เทนเซอร์บอร์ด (โน้ตบุ๊ก) ติดตามและแสดงกราฟการคำนวณโครงข่ายประสาทเทียม เมตริก น้ำหนัก และอื่นๆ โดยใช้เทนเซอร์บอร์ด TensorFlow 2.0+
5 - การจัดการข้อมูล
- โหลดและแยกวิเคราะห์ข้อมูล (โน้ตบุ๊ก) สร้างไปป์ไลน์ข้อมูลที่มีประสิทธิภาพด้วย TensorFlow 2.0 (อาร์เรย์ Numpy, รูปภาพ, ไฟล์ CSV, ข้อมูลที่กำหนดเอง, ...)
- สร้างและโหลด TFRecords (โน้ตบุ๊ก) แปลงข้อมูลเป็นรูปแบบ TFRecords และโหลดด้วย TensorFlow 2.0+
- การแปลงรูปภาพ (เช่น การเพิ่มรูปภาพ) (โน้ตบุ๊ก) ใช้เทคนิคการเพิ่มรูปภาพต่างๆ ด้วย TensorFlow 2.0+ เพื่อสร้างภาพที่บิดเบี้ยวสำหรับการฝึก
6 - ฮาร์ดแวร์
- การฝึกอบรม Multi-GPU (โน้ตบุ๊ก) ฝึกฝนเครือข่ายประสาทเทียมด้วย GPU หลายตัวบนชุดข้อมูล CIFAR-10
เทนเซอร์โฟลว์ v1
ดัชนีบทช่วยสอนสำหรับ TF v1 มีอยู่ที่นี่: ตัวอย่าง TensorFlow v1.15 หรือดูรายการตัวอย่างด้านล่าง
ชุดข้อมูล
ตัวอย่างบางส่วนต้องใช้ชุดข้อมูล MNIST สำหรับการฝึกอบรมและการทดสอบ ไม่ต้องกังวล ชุดข้อมูลนี้จะถูกดาวน์โหลดโดยอัตโนมัติเมื่อเรียกใช้ตัวอย่าง MNIST เป็นฐานข้อมูลของตัวเลขที่เขียนด้วยลายมือ หากต้องการคำอธิบายโดยย่อของชุดข้อมูลนั้น คุณสามารถตรวจสอบสมุดบันทึกนี้ได้
เว็บไซต์อย่างเป็นทางการ: http://yann.lecun.com/exdb/mnist/
การติดตั้ง
หากต้องการดาวน์โหลดตัวอย่างทั้งหมด เพียงโคลนพื้นที่เก็บข้อมูลนี้:
git clone https://github.com/aymericdamien/TensorFlow-Examples
หากต้องการเรียกใช้ คุณต้องมี TensorFlow เวอร์ชันล่าสุดด้วย หากต้องการติดตั้ง:
หรือ (ด้วยการรองรับ GPU):
pip install tensorflow_gpu
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการติดตั้ง TensorFlow คุณสามารถดูคู่มือการติดตั้ง TensorFlow
ตัวอย่าง TensorFlow v1 - ดัชนี
ดัชนีบทช่วยสอนสำหรับ TF v1 มีอยู่ที่นี่: ตัวอย่าง TensorFlow v1.15
0 - ข้อกำหนดเบื้องต้น
- ความรู้เบื้องต้นเกี่ยวกับการเรียนรู้ของเครื่อง
- ข้อมูลเบื้องต้นเกี่ยวกับชุดข้อมูล MNIST
1 - บทนำ
- สวัสดีชาวโลก (โน๊ตบุ๊ค) (รหัส) ตัวอย่างง่ายๆ ในการเรียนรู้วิธีพิมพ์ "hello world" โดยใช้ TensorFlow
- การใช้งานขั้นพื้นฐาน (โน้ตบุ๊ก) (รหัส) ตัวอย่างง่ายๆ ที่ครอบคลุมการดำเนินการพื้นฐานของ TensorFlow
- ข้อมูลพื้นฐานเกี่ยวกับ TensorFlow Eager API (โน้ตบุ๊ก) (โค้ด) เริ่มต้นใช้งาน Eager API ของ TensorFlow
2 - โมเดลพื้นฐาน
- การถดถอยเชิงเส้น (สมุดบันทึก) (รหัส) ใช้การถดถอยเชิงเส้นด้วย TensorFlow
- การถดถอยเชิงเส้น (กระตือรือร้น api) (สมุดบันทึก) (รหัส) ใช้การถดถอยเชิงเส้นโดยใช้ Eager API ของ TensorFlow
- การถดถอยโลจิสติก (สมุดบันทึก) (รหัส) ใช้ Logistic Regression ด้วย TensorFlow
- Logistic Regression (eager api) (โน้ตบุ๊ก) (รหัส) ใช้ Logistic Regression โดยใช้ Eager API ของ TensorFlow
- เพื่อนบ้านที่ใกล้ที่สุด (โน้ตบุ๊ก) (รหัส) ใช้อัลกอริธึม Nearest Neighbor ด้วย TensorFlow
- K-Means (โน้ตบุ๊ก) (รหัส) สร้างตัวแยกประเภท K-Means ด้วย TensorFlow
- Random Forest (โน้ตบุ๊ก) (รหัส) สร้างตัวแยกประเภท Random Forest ด้วย TensorFlow
- แผนผังการตัดสินใจแบบไล่ระดับสี (GBDT) (โน้ตบุ๊ก) (โค้ด) สร้างแผนผังการตัดสินใจแบบไล่ระดับสี (GBDT) ด้วย TensorFlow
- Word2Vec (การฝังคำ) (โน้ตบุ๊ก) (โค้ด) สร้างโมเดลการฝังคำ (Word2Vec) จากข้อมูล Wikipedia ด้วย TensorFlow
3 - โครงข่ายประสาทเทียม
กำกับดูแล
- Simple Neural Network (โน้ตบุ๊ก) (รหัส) สร้างโครงข่ายประสาทเทียมอย่างง่าย (หรือที่เรียกว่า Multi-layer Perceptron) เพื่อจัดประเภทชุดข้อมูลหลัก MNIST การใช้งาน Raw TensorFlow
- Simple Neural Network (tf.layers/estimator api) (โน้ตบุ๊ก) (โค้ด) ใช้ API 'เลเยอร์' และ 'ตัวประมาณ' ของ TensorFlow เพื่อสร้างโครงข่ายประสาทเทียมแบบง่าย (หรือที่เรียกว่า Multi-layer Perceptron) เพื่อจัดประเภทชุดข้อมูลหลัก MNIST
- Simple Neural Network (eager api) (โน้ตบุ๊ก) (รหัส) ใช้ TensorFlow Eager API เพื่อสร้างโครงข่ายประสาทเทียมแบบง่าย (หรือที่เรียกว่า Multi-layer Perceptron) เพื่อจัดประเภทชุดข้อมูลหลัก MNIST
- Convolutional Neural Network (โน้ตบุ๊ก) (รหัส) สร้างโครงข่ายประสาทเทียมแบบหมุนเพื่อจัดประเภทชุดข้อมูลหลัก MNIST การใช้งาน Raw TensorFlow
- Convolutional Neural Network (tf.layers/estimator api) (โน้ตบุ๊ก) (รหัส) ใช้ API 'เลเยอร์' และ 'ตัวประมาณ' ของ TensorFlow เพื่อสร้างโครงข่ายประสาทเทียมแบบหมุนวนเพื่อจัดประเภทชุดข้อมูลหลัก MNIST
- Recurrent Neural Network (LSTM) (โน้ตบุ๊ก) (รหัส) สร้างโครงข่ายประสาทเทียมที่เกิดซ้ำ (LSTM) เพื่อจัดประเภทชุดข้อมูลหลัก MNIST
- Bi-Directional Recurrent Neural Network (LSTM) (โน้ตบุ๊ก) (รหัส) สร้างโครงข่ายประสาทเทียมที่เกิดซ้ำแบบสองทิศทาง (LSTM) เพื่อจัดประเภทชุดข้อมูลหลัก MNIST
- Dynamic Recurrent Neural Network (LSTM) (โน้ตบุ๊ก) (รหัส) สร้างโครงข่ายประสาทเทียมที่เกิดซ้ำ (LSTM) ที่ทำการคำนวณแบบไดนามิกเพื่อจำแนกลำดับที่มีความยาวต่างกัน
ไม่ได้รับการดูแล
- โปรแกรมเข้ารหัสอัตโนมัติ (โน้ตบุ๊ก) (รหัส) สร้างตัวเข้ารหัสอัตโนมัติเพื่อเข้ารหัสรูปภาพในมิติที่ต่ำกว่าและสร้างใหม่
- Variational Auto-Encoder (โน้ตบุ๊ก) (รหัส) สร้าง Variational Auto-Encoder (VAE) เพื่อเข้ารหัสและสร้างภาพจากสัญญาณรบกวน
- GAN (Generative Adversarial Networks) (โน้ตบุ๊ก) (รหัส) สร้างเครือข่ายฝ่ายตรงข้ามทั่วไป (GAN) เพื่อสร้างภาพจากสัญญาณรบกวน
- DCGAN (Deep Convolutional Generative Adversarial Networks) (โน้ตบุ๊ก) (รหัส) สร้าง Deep Convolutional Generative Adversarial Network (DCGAN) เพื่อสร้างภาพจากสัญญาณรบกวน
4 - ยูทิลิตี้
- บันทึกและกู้คืนโมเดล (โน้ตบุ๊ก) (รหัส) บันทึกและกู้คืนโมเดลด้วย TensorFlow
- Tensorboard - การแสดงกราฟและการสูญเสีย (โน้ตบุ๊ก) (โค้ด) ใช้ Tensorboard เพื่อแสดงกราฟการคำนวณและวางแผนการสูญเสีย
- Tensorboard - การแสดงภาพขั้นสูง (โน้ตบุ๊ก) (โค้ด) เจาะลึกเข้าไปในเทนเซอร์บอร์ด แสดงภาพตัวแปร การไล่ระดับสี และอื่นๆ...
5 - การจัดการข้อมูล
- สร้างชุดข้อมูลรูปภาพ (โน้ตบุ๊ก) (โค้ด) สร้างชุดข้อมูลรูปภาพของคุณเองด้วยคิวข้อมูล TensorFlow จากโฟลเดอร์รูปภาพหรือไฟล์ชุดข้อมูล
- TensorFlow Dataset API (โน้ตบุ๊ก) (โค้ด) ขอแนะนำ TensorFlow Dataset API สำหรับการเพิ่มประสิทธิภาพไปป์ไลน์ข้อมูลอินพุต
- โหลดและแยกวิเคราะห์ข้อมูล (โน้ตบุ๊ก) สร้างไปป์ไลน์ข้อมูลที่มีประสิทธิภาพ (อาร์เรย์ Numpy, รูปภาพ, ไฟล์ CSV, ข้อมูลที่กำหนดเอง, ...)
- สร้างและโหลด TFRecords (โน้ตบุ๊ก) แปลงข้อมูลเป็นรูปแบบ TFRecords แล้วโหลด
- การแปลงรูปภาพ (เช่น การเพิ่มรูปภาพ) (โน้ตบุ๊ก) ใช้เทคนิคการเพิ่มภาพต่างๆ เพื่อสร้างภาพที่บิดเบี้ยวสำหรับการฝึก
6 - หลาย GPU
- การทำงานพื้นฐานบน multi-GPU (โน้ตบุ๊ก) (รหัส) ตัวอย่างง่ายๆ ในการแนะนำ multi-GPU ใน TensorFlow
- ฝึกอบรมโครงข่ายประสาทเทียมบน multi-GPU (โน้ตบุ๊ก) (โค้ด) การใช้งาน TensorFlow ที่ชัดเจนและเรียบง่ายเพื่อฝึกโครงข่ายประสาทเทียมแบบหมุนวนบน GPU หลายตัว
ตัวอย่างเพิ่มเติม
ตัวอย่างต่อไปนี้มาจาก TFLearn ซึ่งเป็นไลบรารีที่มีอินเทอร์เฟซที่เรียบง่ายสำหรับ TensorFlow คุณสามารถดูได้ มีตัวอย่างมากมาย รวมถึงการดำเนินการและเลเยอร์ที่สร้างไว้ล่วงหน้า
บทช่วยสอน
- TFLearn การเริ่มต้นอย่างรวดเร็ว เรียนรู้พื้นฐานของ TFLearn ผ่านงานการเรียนรู้ของเครื่องที่เป็นรูปธรรม สร้างและฝึกตัวแยกประเภทเครือข่ายประสาทเชิงลึก
ตัวอย่าง
- ตัวอย่าง TFLearn ตัวอย่างมากมายที่ใช้ TFLearn