ฉันได้ออกแบบบทช่วยสอน TensorFlow นี้สำหรับมืออาชีพและผู้ที่ชื่นชอบที่สนใจในการใช้ Deep Learning Algorithm โดยใช้ TensorFlow เพื่อแก้ปัญหาต่างๆ TensorFlow เป็นไลบรารีการเรียนรู้เชิงลึกแบบโอเพนซอร์สที่ใช้แนวคิดของกราฟการไหลของข้อมูลสำหรับการสร้างแบบจำลอง ช่วยให้คุณสร้างเครือข่ายประสาทขนาดใหญ่ที่มีหลายชั้นการเรียนรู้การใช้ห้องสมุดนี้เป็นส่วนพื้นฐานของไฟล์ .ต่อไปนี้เป็นหัวข้อที่จะกล่าวถึงในบล็อกการสอน TensorFlow นี้:
- TensorFlow คืออะไร
- ข้อมูลพื้นฐานเกี่ยวกับรหัส TensorFlow
- TensorFlow UseCase
Tensors คืออะไร?
ในบทช่วยสอน TensorFlow นี้ก่อนที่จะพูดถึง TensorFlow ให้เราทำความเข้าใจก่อน เทนเซอร์คืออะไร . Tensors ไม่ใช่อะไรนอกจากเป็นตัวแทนของข้อมูลในการเรียนรู้เชิงลึกโดยพฤตินัย
ดังที่แสดงในภาพด้านบนเทนเซอร์เป็นเพียงอาร์เรย์หลายมิติที่ช่วยให้คุณแสดงข้อมูลที่มีขนาดสูงกว่าได้ โดยทั่วไปการเรียนรู้เชิงลึกคุณจะจัดการกับชุดข้อมูลที่มีมิติสูงโดยมิติข้อมูลอ้างอิงถึงคุณลักษณะต่างๆที่มีอยู่ในชุดข้อมูล ในความเป็นจริงชื่อ“ TensorFlow” ได้มาจากการทำงานของเครือข่ายประสาทเทียมที่ทำงานบนเทนเซอร์ มันเป็นการไหลของเทนเซอร์อย่างแท้จริง เนื่องจากคุณเข้าใจแล้วว่าเทนเซอร์คืออะไรให้เราก้าวไปข้างหน้าในบทช่วยสอน TensorFlow นี้และทำความเข้าใจ - TensorFlow คืออะไร?
TensorFlow คืออะไร?
TensorFlow เป็นไลบรารีที่ใช้ Python ซึ่งมีฟังก์ชันการทำงานประเภทต่างๆสำหรับการใช้งานโมเดล Deep Learning ตามที่กล่าวไว้ก่อนหน้านี้คำว่า TensorFlow ประกอบด้วยสองคำ - Tensor & Flow:
ใน TensorFlow คำว่า tensor หมายถึงการแสดงข้อมูลเป็นอาร์เรย์หลายมิติในขณะที่การไหลของคำหมายถึงชุดของการดำเนินการที่ดำเนินการกับเทนเซอร์ดังที่แสดงในภาพด้านบน
ตอนนี้เราได้ครอบคลุมพื้นหลังเกี่ยวกับ TensorFlow เพียงพอแล้ว
ถัดไปในบทช่วยสอน TensorFlow นี้เราจะพูดคุยเกี่ยวกับข้อมูลพื้นฐานเกี่ยวกับรหัส TensorFlow
TensorFlow Tutorial: Code Basics
โดยทั่วไปกระบวนการโดยรวมของการเขียนโปรแกรม TensorFlow มีสองขั้นตอน:
- การสร้างกราฟเชิงคำนวณ
- การเรียกใช้กราฟเชิงคำนวณ
ให้ฉันอธิบายสองขั้นตอนข้างต้นทีละขั้นตอน:
1. การสร้างกราฟเชิงคำนวณ
ดังนั้น, กราฟคำนวณคืออะไร? กราฟการคำนวณคือชุดของการดำเนินการ TensorFlow ที่จัดเรียงเป็นโหนดในกราฟ แต่ละโหนดใช้เทนเซอร์เป็นอินพุต 0 หรือมากกว่าและสร้างเทนเซอร์เป็นเอาต์พุต ผมขอยกตัวอย่างกราฟการคำนวณอย่างง่ายซึ่งประกอบด้วยสามโหนด - ถึง , ข & ค ดังแสดงด้านล่าง:
ข้อมูล tableau ผสมซ้ายเข้าร่วม
คำอธิบายของกราฟการคำนวณข้างต้น:
โหนดคงที่ใช้เพื่อเก็บค่าคงที่เนื่องจากใช้อินพุตเป็นศูนย์ แต่สร้างค่าที่เก็บไว้เป็นเอาต์พุต ในตัวอย่างข้างต้น a และ b คือโหนดคงที่ที่มีค่า 5 และ 6 ตามลำดับ
- โหนด c แสดงถึงการดำเนินการคูณค่าคงที่โหนด a กับ b ดังนั้นการรันโหนด c จะทำให้เกิดการคูณของโหนด const a & b
โดยพื้นฐานแล้วเราสามารถคิดว่ากราฟเชิงคำนวณเป็นอีกทางเลือกหนึ่งในการกำหนดแนวคิดการคำนวณทางคณิตศาสตร์ที่เกิดขึ้นในโปรแกรม TensorFlow การดำเนินการที่กำหนดให้กับโหนดต่างๆของกราฟการคำนวณสามารถดำเนินการควบคู่กันได้ดังนั้นจึงให้ประสิทธิภาพที่ดีกว่าในแง่ของการคำนวณ
ในที่นี้เราเพียงแค่อธิบายถึงการคำนวณมันไม่ได้คำนวณอะไรเลยมันไม่ได้เก็บค่าใด ๆ เพียงแค่กำหนดการดำเนินการที่ระบุไว้ในโค้ดของคุณ
2. เรียกใช้กราฟเชิงคำนวณ
ให้เรานำตัวอย่างก่อนหน้าของกราฟการคำนวณและทำความเข้าใจวิธีการดำเนินการ ต่อไปนี้เป็นรหัสจากตัวอย่างก่อนหน้านี้:
ตัวอย่างที่ 1:
นำเข้าเทนเซอร์โฟลว์เป็น tf # สร้างกราฟ a = tf.constant (5.0) b = tf.constant (6.0) c = a * b
ตอนนี้เพื่อให้ได้ผลลัพธ์ของโหนด c เราจำเป็นต้องเรียกใช้กราฟการคำนวณภายในไฟล์ เซสชัน . เซสชันจะวางการทำงานของกราฟลงในอุปกรณ์เช่น CPU หรือ GPU และมีวิธีการดำเนินการ
เซสชันจะห่อหุ้มการควบคุมและสถานะของรันไทม์ TensorFlow นั่นคือเก็บข้อมูลเกี่ยวกับลำดับที่การดำเนินการทั้งหมดจะดำเนินการและส่งผ่านผลลัพธ์ของการดำเนินการที่คำนวณแล้วไปยังการดำเนินการถัดไปในไปป์ไลน์ ให้ฉันแสดงวิธีเรียกใช้กราฟการคำนวณด้านบนภายในเซสชัน (มีการเพิ่มคำอธิบายของโค้ดแต่ละบรรทัดเป็นความคิดเห็น):
# สร้างวัตถุเซสชัน sess = tf.Session () # เรียกใช้กราฟภายในเซสชันและจัดเก็บผลลัพธ์ไปยังตัวแปร output_c = sess.run (c) # พิมพ์เอาต์พุตของโหนด c พิมพ์ (output_c) # ปิดเซสชันเป็น เพิ่มทรัพยากรบางอย่าง sess.close ()
เอาท์พุต: 30
ดังนั้นนี่คือทั้งหมดที่เกี่ยวกับเซสชันและการเรียกใช้กราฟการคำนวณภายในนั้น ตอนนี้ให้เราพูดถึงตัวแปรและตัวยึดตำแหน่งที่เราจะใช้อย่างกว้างขวางในขณะที่สร้างโมเดลการเรียนรู้เชิงลึกโดยใช้ TensorFlow
ค่าคงที่ตัวยึดตำแหน่งและตัวแปร
ใน TensorFlow ค่าคงที่ตัวยึดตำแหน่งและตัวแปรจะถูกใช้เพื่อแสดงพารามิเตอร์ต่างๆของโมเดลการเรียนรู้เชิงลึก เนื่องจากฉันได้พูดถึงค่าคงที่แล้วก่อนหน้านี้ฉันจะเริ่มต้นด้วยตัวยึดตำแหน่ง
ตัวยึด:
ค่าคงที่ TensorFlow ช่วยให้คุณสามารถจัดเก็บค่าได้ แต่ถ้าคุณต้องการให้โหนดของคุณรับอินพุตขณะรันล่ะ? สำหรับฟังก์ชันประเภทนี้จะใช้ตัวยึดตำแหน่งซึ่งช่วยให้กราฟของคุณรับอินพุตภายนอกเป็นพารามิเตอร์ โดยทั่วไปตัวยึดตำแหน่งคือสัญญาว่าจะให้ค่าในภายหลังหรือระหว่างรันไทม์ ผมขอยกตัวอย่างเพื่อทำให้สิ่งต่างๆง่ายขึ้น:
นำเข้าเทนเซอร์โฟลว์เป็น tf # การสร้างตัวยึด a = tf ตัวยึด (tf.float32) b = tf ตัวยึด (tf.float32) # การกำหนดการคูณ w.r.t. a & ampamp b ไปยังโหนด mul mul = a * b # สร้างวัตถุเซสชัน sess = tf.Session () # ดำเนินการ mul โดยส่งค่า [1, 3] [2, 4] สำหรับ a และ b ตามลำดับ output = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Multiplying ab:', output)
เอาท์พุต: [2. 12. ]
สิ่งที่ต้องจำเกี่ยวกับ ตัวยึด:
- ตัวยึดตำแหน่งไม่ได้ถูกเตรียมใช้งานและไม่มีข้อมูล
- หนึ่งต้องให้อินพุตหรือฟีดให้กับตัวยึดซึ่งจะพิจารณาระหว่างรันไทม์
- การเรียกใช้ตัวยึดตำแหน่งโดยไม่มีอินพุตทำให้เกิดข้อผิดพลาด
ตอนนี้ให้เราก้าวไปข้างหน้าและทำความเข้าใจ - ตัวแปรคืออะไร?
ตัวแปร
ในการเรียนรู้เชิงลึกตัวยึดตำแหน่งจะถูกใช้เพื่อป้อนข้อมูลโดยพลการในแบบจำลองหรือกราฟของคุณ นอกเหนือจากการป้อนข้อมูลแล้วคุณยังต้องปรับเปลี่ยนกราฟเพื่อให้สามารถสร้างเอาต์พุตใหม่ได้ w.r.t. อินพุตเดียวกัน สำหรับสิ่งนี้คุณจะใช้ตัวแปร สรุปได้ว่าตัวแปรช่วยให้คุณสามารถเพิ่มพารามิเตอร์หรือโหนดดังกล่าวลงในกราฟที่ฝึกอบรมได้นั่นคือค่าสามารถแก้ไขได้ในช่วงเวลาหนึ่ง ตัวแปรถูกกำหนดโดยระบุค่าเริ่มต้นและประเภทดังที่แสดงด้านล่าง:
var = tf. ตัวแปร ([0.4], dtype = tf.float32)
บันทึก:
- ในกรณีที่คุณไม่ได้ระบุประเภทข้อมูลอย่างชัดเจน TensorFlow จะอนุมานประเภทของค่าคงที่ / ตัวแปรจากค่าเริ่มต้น
- TensorFlow มีประเภทข้อมูลของตัวเองมากมายเช่น tf.float32 , tf.int32 เป็นต้น คุณอาจอ้างถึงสิ่งเหล่านี้ทั้งหมด ที่นี่ .
ค่าคงที่จะเริ่มต้นเมื่อคุณโทร tf.constant และคุณค่าของมันไม่สามารถเปลี่ยนแปลงได้ ในทางตรงกันข้ามตัวแปรจะไม่เริ่มต้นเมื่อคุณโทร tf ตัวแปร . ในการเริ่มต้นตัวแปรทั้งหมดในโปรแกรม TensorFlow คุณ ต้อง เรียกการดำเนินการพิเศษอย่างชัดเจนดังที่แสดงด้านล่าง:
อาร์เรย์ของวัตถุ java ตัวอย่าง
init = tf.global_variables_initializer () sess.run (init)
โปรดจำไว้เสมอว่าต้องเริ่มต้นตัวแปรก่อนที่จะใช้กราฟในครั้งแรก
บันทึก: ตัวแปร TensorFlow คือบัฟเฟอร์ในหน่วยความจำที่มีเทนเซอร์ แต่ต่างจากเทนเซอร์ปกติที่จะสร้างอินสแตนซ์เฉพาะเมื่อกราฟถูกเรียกใช้และจะถูกลบทันทีหลังจากนั้นตัวแปรจะอยู่รอดในการดำเนินการหลายกราฟ
ตอนนี้เราได้ครอบคลุมพื้นฐานของ TensorFlow เพียงพอแล้วให้เราไปทำความเข้าใจวิธีใช้แบบจำลองการถดถอยเชิงเส้นโดยใช้ TensorFlow
แบบจำลองการถดถอยเชิงเส้นโดยใช้ TensorFlow
Linear Regression Model ใช้สำหรับทำนายค่าที่ไม่รู้จักของตัวแปร (Dependent Variable) จากค่าที่ทราบของตัวแปรอื่น (ตัวแปรอิสระ) โดยใช้สมการถดถอยเชิงเส้นดังที่แสดงด้านล่าง:
ดังนั้นในการสร้างแบบจำลองเชิงเส้นคุณต้อง:
- ตัวแปรตามหรือเอาต์พุต (Y)
- ตัวแปรความลาดชัน (w)
- Y - สกัดกั้นหรืออคติ (b)
- ตัวแปรอิสระหรืออินพุต (X)
ดังนั้นให้เราเริ่มสร้างแบบจำลองเชิงเส้นโดยใช้ TensorFlow:
คัดลอกรหัสโดยคลิกปุ่มที่ระบุด้านล่าง:
# การสร้างตัวแปรสำหรับความชันพารามิเตอร์ (W) โดยมีค่าเริ่มต้นเป็น 0.4 W = tf.Variable ([. 4], tf.float32) # การสร้างตัวแปรสำหรับพารามิเตอร์ไบแอส (b) ด้วยค่าเริ่มต้นเป็น -0.4 b = tf.Variable ( [-0.4], tf.float32) # การสร้างตัวยึดสำหรับป้อนข้อมูลหรือตัวแปรอิสระแสดงโดย xx = tf.placeholder (tf.float32) # สมการของการถดถอยเชิงเส้น linear_model = W * x + b # การเริ่มต้นตัวแปรทั้งหมด sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # การรันแบบจำลองการถดถอยเพื่อคำนวณเอาต์พุต WRt เพื่อพิมพ์ค่า x ที่ระบุ (sess.run (linear_model {x: [1, 2, 3, 4]}))
เอาท์พุต:
[0. 0.40000001 0.80000007 1.20000005]
รหัสที่ระบุไว้ข้างต้นเป็นเพียงแนวคิดพื้นฐานที่อยู่เบื้องหลังการนำแบบจำลองการถดถอยไปใช้เช่นคุณทำตามสมการของเส้นการถดถอยอย่างไรเพื่อให้ได้ผลลัพธ์ w.r.t. ชุดของค่าอินพุต แต่ยังมีอีกสองสิ่งที่ต้องเพิ่มในแบบจำลองนี้เพื่อให้เป็นแบบจำลองการถดถอยที่สมบูรณ์:
- ขั้นแรกเราต้องจัดเตรียมกลไกที่โมเดลของเราสามารถฝึกฝนตัวเองโดยอัตโนมัติตามชุดอินพุตและเอาต์พุตที่กำหนด
- สิ่งที่สองที่เราต้องการคือการตรวจสอบความถูกต้องของโมเดลที่ได้รับการฝึกฝนโดยการเปรียบเทียบผลลัพธ์กับผลลัพธ์ที่ต้องการหรือเป้าหมายตามชุดค่า x ที่กำหนด
ตอนนี้ให้เราเข้าใจว่าฉันจะรวมฟังก์ชันที่ระบุไว้ข้างต้นลงในโค้ดของฉันสำหรับโมเดลการถดถอยได้อย่างไร
ฟังก์ชันการสูญเสีย - การตรวจสอบโมเดล
ฟังก์ชันการสูญเสียจะวัดว่าเอาต์พุตปัจจุบันของโมเดลอยู่ห่างจากเอาต์พุตที่ต้องการหรือเป้าหมายเพียงใด ฉันจะใช้ฟังก์ชันการสูญเสียที่ใช้บ่อยที่สุดสำหรับโมเดลการถดถอยเชิงเส้นที่เรียกว่า Sum of Squared Error หรือ SSE SSE คำนวณ w.r.t. เอาต์พุตแบบจำลอง (แสดงโดย linear_model) และเอาต์พุตที่ต้องการหรือเป้าหมาย (y) เป็น:
y = tf.placeholder (tf.float32) error = linear_model - y squared_errors = tf.square (error) loss = tf.reduce_sum (squared_errors) print (sess.run (loss, {x: [1,2,3,4) ], y: [2, 4, 6, 8]})
เอาท์พุต: 90.24
อย่างที่คุณเห็นเราได้รับมูลค่าการสูญเสียสูง ดังนั้นเราจำเป็นต้องปรับน้ำหนัก (W) และอคติ (b) เพื่อลดข้อผิดพลาดที่เราได้รับ
tf.train API - การฝึกอบรม Model
TensorFlow ให้ เครื่องมือเพิ่มประสิทธิภาพ ที่ค่อยๆเปลี่ยนตัวแปรแต่ละตัวเพื่อลดฟังก์ชันการสูญเสียหรือข้อผิดพลาดให้น้อยที่สุด เครื่องมือเพิ่มประสิทธิภาพที่ง่ายที่สุดคือ การไล่ระดับสี . มันปรับเปลี่ยนแต่ละตัวแปรตามขนาดของอนุพันธ์ของการสูญเสียที่เกี่ยวกับตัวแปรนั้น
# การสร้างอินสแตนซ์ของเครื่องมือเพิ่มประสิทธิภาพการลดระดับการไล่ระดับสี = tf.train.GradientDescentOptimizer (0.01) train = optimizer.minimize (การสูญเสีย) สำหรับ i ในช่วง (1000): sess.run (train, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) พิมพ์ (sess.run ([W, b]))
เอาท์พุต: [อาร์เรย์ ([1.99999964], dtype = float32), อาร์เรย์ ([9.86305167e-07], dtype = float32)]
นี่คือวิธีที่คุณสร้างแบบจำลองเชิงเส้นโดยใช้ TensorFlow และฝึกให้ได้ผลลัพธ์ที่ต้องการ
ตอนนี้คุณรู้เกี่ยวกับ Deep Learning แล้วลองดูไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก หลักสูตรการฝึกอบรม Edureka Deep Learning พร้อมการรับรอง TensorFlow ช่วยให้ผู้เรียนมีความเชี่ยวชาญในการฝึกอบรมและเพิ่มประสิทธิภาพเครือข่ายประสาทขั้นพื้นฐานและ Convolutional โดยใช้โครงการและการมอบหมายแบบเรียลไทม์พร้อมกับแนวคิดต่างๆเช่นฟังก์ชัน SoftMax, เครือข่ายประสาทที่เข้ารหัสอัตโนมัติ, เครื่อง Boltzmann ที่ จำกัด (RBM)
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป
การสอนเว็บไซต์ทับทิมบนราง