TensorFlow Tutorial - การเรียนรู้เชิงลึกโดยใช้ TensorFlow



TensorFlow Tutorial เป็นบล็อกที่สามในซีรีส์ รวมถึงพื้นฐานทั้งหมดของ TensorFlow นอกจากนี้ยังพูดถึงวิธีสร้างแบบจำลองเชิงเส้นอย่างง่าย

ฉันได้ออกแบบบทช่วยสอน TensorFlow นี้สำหรับมืออาชีพและผู้ที่ชื่นชอบที่สนใจในการใช้ Deep Learning Algorithm โดยใช้ TensorFlow เพื่อแก้ปัญหาต่างๆ TensorFlow เป็นไลบรารีการเรียนรู้เชิงลึกแบบโอเพนซอร์สที่ใช้แนวคิดของกราฟการไหลของข้อมูลสำหรับการสร้างแบบจำลอง ช่วยให้คุณสร้างเครือข่ายประสาทขนาดใหญ่ที่มีหลายชั้นการเรียนรู้การใช้ห้องสมุดนี้เป็นส่วนพื้นฐานของไฟล์ .ต่อไปนี้เป็นหัวข้อที่จะกล่าวถึงในบล็อกการสอน TensorFlow นี้:

  • TensorFlow คืออะไร
  • ข้อมูลพื้นฐานเกี่ยวกับรหัส TensorFlow
  • TensorFlow UseCase

Tensors คืออะไร?

ในบทช่วยสอน TensorFlow นี้ก่อนที่จะพูดถึง TensorFlow ให้เราทำความเข้าใจก่อน เทนเซอร์คืออะไร . Tensors ไม่ใช่อะไรนอกจากเป็นตัวแทนของข้อมูลในการเรียนรู้เชิงลึกโดยพฤตินัย





Tensors - TensorFlow Tutorial - Edurekaดังที่แสดงในภาพด้านบนเทนเซอร์เป็นเพียงอาร์เรย์หลายมิติที่ช่วยให้คุณแสดงข้อมูลที่มีขนาดสูงกว่าได้ โดยทั่วไปการเรียนรู้เชิงลึกคุณจะจัดการกับชุดข้อมูลที่มีมิติสูงโดยมิติข้อมูลอ้างอิงถึงคุณลักษณะต่างๆที่มีอยู่ในชุดข้อมูล ในความเป็นจริงชื่อ“ TensorFlow” ได้มาจากการทำงานของเครือข่ายประสาทเทียมที่ทำงานบนเทนเซอร์ มันเป็นการไหลของเทนเซอร์อย่างแท้จริง เนื่องจากคุณเข้าใจแล้วว่าเทนเซอร์คืออะไรให้เราก้าวไปข้างหน้าในบทช่วยสอน TensorFlow นี้และทำความเข้าใจ - TensorFlow คืออะไร?

TensorFlow คืออะไร?

TensorFlow เป็นไลบรารีที่ใช้ Python ซึ่งมีฟังก์ชันการทำงานประเภทต่างๆสำหรับการใช้งานโมเดล Deep Learning ตามที่กล่าวไว้ก่อนหน้านี้คำว่า TensorFlow ประกอบด้วยสองคำ - Tensor & Flow:



ใน TensorFlow คำว่า tensor หมายถึงการแสดงข้อมูลเป็นอาร์เรย์หลายมิติในขณะที่การไหลของคำหมายถึงชุดของการดำเนินการที่ดำเนินการกับเทนเซอร์ดังที่แสดงในภาพด้านบน

ตอนนี้เราได้ครอบคลุมพื้นหลังเกี่ยวกับ TensorFlow เพียงพอแล้ว



ถัดไปในบทช่วยสอน TensorFlow นี้เราจะพูดคุยเกี่ยวกับข้อมูลพื้นฐานเกี่ยวกับรหัส TensorFlow

TensorFlow Tutorial: Code Basics

โดยทั่วไปกระบวนการโดยรวมของการเขียนโปรแกรม TensorFlow มีสองขั้นตอน:

  1. การสร้างกราฟเชิงคำนวณ
  2. การเรียกใช้กราฟเชิงคำนวณ

ให้ฉันอธิบายสองขั้นตอนข้างต้นทีละขั้นตอน:

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) จากค่าที่ทราบของตัวแปรอื่น (ตัวแปรอิสระ) โดยใช้สมการถดถอยเชิงเส้นดังที่แสดงด้านล่าง:

ดังนั้นในการสร้างแบบจำลองเชิงเส้นคุณต้อง:

  1. ตัวแปรตามหรือเอาต์พุต (Y)
  2. ตัวแปรความลาดชัน (w)
  3. Y - สกัดกั้นหรืออคติ (b)
  4. ตัวแปรอิสระหรืออินพุต (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)

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป

การสอนเว็บไซต์ทับทิมบนราง