ยุคของ การเรียนรู้เชิงลึก และ อยู่ที่จุดสูงสุด มันกำลังจะสร้าง 2.3 ล้าน งานภายในปี 2020 ด้วยเฟรมเวิร์กใหม่ ๆ ที่กำลังจะมาถึงทุกเดือน TensorFlow และ Theano ก็อยู่ที่นั่นมาระยะหนึ่งแล้วและก็ได้รับความนิยมอย่างมากมายเช่นกัน ดังนั้นในบทความ Theano vs TensorFlow นี้ฉันจะพูดถึงหัวข้อต่อไปนี้:
Theano คืออะไร?
Theano สามารถกำหนดให้เป็นไลบรารีสำหรับ คอมพิวเตอร์วิทยาศาสตร์ . ได้รับการพัฒนาโดยUniversité de Montréalและวางจำหน่ายตั้งแต่ปี 2550
ช่วยให้คุณสามารถกำหนดปรับแต่งและประเมินนิพจน์ทางคณิตศาสตร์ที่เกี่ยวข้องกับอาร์เรย์หลายมิติได้อย่างมีประสิทธิภาพ สามารถทำงานได้ทั้งบน CPU และ GPU
การสอนข้อมูลขนาดใหญ่สำหรับผู้เริ่มต้น
TensorFlow คืออะไร?
TensorFlow คือไลบรารีซอฟต์แวร์โอเพนซอร์สโดย Google Brain สำหรับการเขียนโปรแกรมกระแสข้อมูลในงานต่างๆ
เป็นไลบรารีคณิตศาสตร์เชิงสัญลักษณ์ที่ใช้สำหรับแอปพลิเคชันการเรียนรู้ของเครื่องเช่น .
Theano กับ TensorFlow
เราจะเปรียบเทียบ Theano กับ TensorFlow ตามเมตริกต่อไปนี้:
ความนิยม:
ธีโน | TensorFlow |
Theano เป็น Framework เก่าคือ ไม่เป็นที่นิยม ในหมู่ , นักวิจัย. มันเป็นกาลครั้งหนึ่ง | TensorFlow เป็นมือลง ที่มีชื่อเสียงมากที่สุด Deep Learning Framework และใช้ในการวิจัยจำนวนมาก |
ความเร็วในการดำเนินการ:
ธีโน | TensorFlow |
ทำงานได้เร็วกว่า TensorFlow โดยเฉพาะอย่างยิ่ง GPU Tasks เดียวทำงานเร็วใน Theano | ความเร็วในการดำเนินการของ TensorFlow นั้นช้ากว่าเมื่อเทียบกับ Theano แต่ในงาน Multi-GPU จะเป็นผู้นำ |
ประโยชน์ของเทคโนโลยี:
ธีโน | TensorFlow |
รองรับการใช้งานที่หลากหลาย Theano คำนวณการไล่ระดับสีเมื่อกำหนด ข้อผิดพลาด คุณสามารถควบคุมเครื่องมือเพิ่มประสิทธิภาพได้อย่างเต็มที่เนื่องจากคุณต้องฮาร์ดโค้ด | TensorFlow ยังคงต้องมาพร้อมกับ Theano นั่นไม่ใช่กรณีของ TensorFlow ช่วยให้สามารถเข้าถึงเครื่องมือเพิ่มประสิทธิภาพที่ดีมากมายนอกกรอบ ซึ่งทำให้การเข้ารหัสง่ายขึ้น |
ความเข้ากันได้:
ธีโน | TensorFlow |
Keras ห้องสมุดการเรียนรู้เชิงลึกที่น่าทึ่งเข้ากันได้กับ Theano มันรวมเข้าด้วยกันได้ดี มีการสนับสนุน Windows แบบดั้งเดิม นอกจากนี้ยังรองรับ High-Level Wrappers เช่น Lasagne | แต่ในกรณีของ TensorFlow นั้นยังไม่ค่อยมี อย่างไรก็ตามในเวอร์ชัน 2.0 จะไม่เป็นเช่นนั้น ขณะนี้ TensorFlow ขาดการสนับสนุนนี้ ไม่รองรับ Lasagne |
การสนับสนุนชุมชน:
ธีโน | TensorFlow |
Theano มีการสนับสนุนชุมชนที่ใหญ่ขึ้นอย่างที่เคยเป็นมาก่อน TensorFlow มีเอกสารมากกว่า TensorFlow | การสนับสนุนชุมชนออนไลน์ของ TensorFlow กำลังเพิ่มขึ้นอย่างรวดเร็วด้วยความนิยม เอกสารค่อนข้างน้อยกว่า |
การอ่านรหัส:
ให้เราเปรียบเทียบ Theano vs TensorFlow ตามรหัสของพวกเขา ที่นี่ฉันกำลังใช้สคริปต์ตัวอย่างพื้นฐานซึ่งเราจะนำข้อมูลปลอมบางส่วนและเริ่มต้นให้เหมาะสมที่สุดสำหรับข้อมูลนั้นเพื่อให้สามารถคาดเดาจุดข้อมูลในอนาคตได้
รหัส Theano:
นำเข้า theano นำเข้า theano.tensor เป็น T นำเข้า numpy # อีกครั้งทำ 100 คะแนนใน numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # Intialise Theano model X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared ( numpy.random.uniform (-1.0, 1.0, (1, 2)), name = 'W') y = W.dot (X) + b # คำนวณการไล่ระดับสี WRT ค่าเฉลี่ยกำลังสองข้อผิดพลาดสำหรับแต่ละพารามิเตอร์ต้นทุน = T.mean (T.sqr (y - Y)) gradientW = T.grad (cost = cost, wrt = W) gradientB = T.grad (cost = cost, wrt = b) updates = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] train = theano.function (inputs = [X, Y], outputs = cost, updates = updates, allow_input_downcast = True) สำหรับ i ใน xrange (0, 201): รถไฟ (x_data, y_data) พิมพ์ W.get_value (), b.get_value ()
รหัส TensorFlow เทียบเท่า:
นำเข้าเทนเซอร์โฟลว์เป็น tf นำเข้า numpy เป็น np # สร้างจุดข้อมูลปลอม 100 จุดใน NumPy x_data = np.float32 (np.random.rand (2, 100)) # อินพุตแบบสุ่ม y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # สร้างโมเดลเชิงเส้น b = tf ตัวแปร (tf.zeros ([1])) W = tf.Variable (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # ลดข้อผิดพลาดกำลังสองให้น้อยที่สุด loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # สำหรับการเริ่มต้นตัวแปร init = tf.initialize_all_variables () # เรียกใช้กราฟ sess = tf.Session () sess.run (init) # พอดีระนาบ สำหรับขั้นตอนใน xrange (0, 201): sess.run (รถไฟ) ถ้าขั้นตอนที่% 20 == 0: ขั้นตอนการพิมพ์, sess.run (W), sess.run (b) # การเรียนรู้ที่เหมาะสมที่สุดคือ W: [[0.100 0.200]], b: [0.300]
ความยาวที่ชาญฉลาด ทั้งจรรยาบรรณเกือบ คล้ายกัน ไม่มีความแตกต่างกันมากนัก สองรายการที่สร้างขึ้นเหมือนกัน อาร์เรย์ที่อธิบายอินพุตและเอาต์พุตเป้าหมาย แต่ถ้าเราดูที่ Model Initialization
การเริ่มต้นโมเดล:
# TensorFlow b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Theano X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared (numpy.random .uniform (-1.0, 1.0, (1, 2)), ชื่อ = 'W') y = W.dot (X) + b
ดังที่คุณเห็นที่นี่ว่า TensorFlow ไม่ต้องการการปฏิบัติพิเศษใด ๆ สำหรับตัวแปร X และ Y ในทางกลับกัน Theano ต้องใช้ความพยายามเป็นพิเศษเพื่อให้แน่ใจว่าตัวแปรนั้น อินพุตสัญลักษณ์ ไปยังฟังก์ชัน คำจำกัดความของ b และ W นั้นอธิบายได้และดีกว่าด้วย
การเรียนรู้: การเพิ่มประสิทธิภาพ
# การสูญเสีย Tensorflow = tf.reduce_mean (tf.square (y - y_data)) # (1) เครื่องมือเพิ่มประสิทธิภาพ = tf.train.GradientDescentOptimizer (0.5) # (2) รถไฟ = เครื่องมือเพิ่มประสิทธิภาพลด (การสูญเสีย) # (3) # ต้นทุน Theano = T.mean (T.sqr (y - Y)) # (1) gradientW = T.grad (cost = cost, wrt = W) # (2) gradientB = T.grad (cost = cost, wrt = b) # (2) การอัปเดต = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] # (2) train = theano.function (inputs = [X, Y], outputs = cost, updates = อัปเดต allow_input_downcast = True) # (3)
สำหรับ (1) MSE เกือบจะเหมือนกันสำหรับ Theano vs TensorFlow
สำหรับ (2) การกำหนด เครื่องมือเพิ่มประสิทธิภาพ เป็นเรื่องง่ายและเรียบง่ายอย่างที่ได้รับในกรณีของ TensorFlow แต่ Theanno ให้การควบคุมที่เหนือกว่าเครื่องมือเพิ่มประสิทธิภาพแม้ว่าจะค่อนข้างยาวและเพิ่มความพยายามในการยืนยัน
สำหรับ (3) ฟังก์ชั่นการฝึกอบรม รหัสเกือบจะคล้ายกัน
ร่างกายการฝึกอบรม:
# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) สำหรับขั้นตอนใน xrange (0, 201): sess.run (รถไฟ) # Theano สำหรับ i ใน xrange (0, 201): รถไฟ (x_data, y_data) พิมพ์ W.get_value (), b.get_value ()
รหัสสำหรับการฝึกเกือบจะเหมือนกัน แต่การห่อหุ้ม Graph Execution ใน Session Object คือ ทำความสะอาดตามแนวคิด กว่า Theano
คำตัดสินขั้นสุดท้าย: Theano vs TensorFlow
ในหมายเหตุสรุปอาจกล่าวได้ว่าทั้งสอง API มี อินเตอร์เฟซที่คล้ายกัน . แต่ TensorFlow นั้นเปรียบเทียบได้ ง่ายกว่า คุณใช้เนื่องจากมีเครื่องมือตรวจสอบและดีบักจำนวนมาก Theano เป็นผู้นำใน การใช้งานและความเร็ว แต่ TensorFlow เหมาะกว่าสำหรับ Deployment เอกสารหรือ เอกสารประกอบ สำหรับ Theano เป็นมากกว่า TensorFlow และ TensorFlow เป็นภาษาใหม่ที่ผู้คนไม่มีทรัพยากรมากมายในการเริ่มต้น ห้องสมุดลึกแบบโอเพนซอร์สเช่น Keras, Lasagne และ Blocks สร้างขึ้นด้านบนของ ธีโน.
ฉันหวังว่าการเปรียบเทียบนี้เพียงพอสำหรับคุณในการตัดสินใจว่าจะเลือกใช้กรอบงานใดโปรดดูที่ไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก การฝึกอบรมการรับรองนี้ได้รับการดูแลโดยผู้เชี่ยวชาญในอุตสาหกรรมตามข้อกำหนดและความต้องการของอุตสาหกรรม คุณจะเชี่ยวชาญแนวคิดต่างๆเช่นฟังก์ชัน SoftMax, Autoencoder Neural Networks, เครื่อง Boltzmann ที่ จำกัด (RBM) และทำงานกับไลบรารีเช่น Keras & TFLearn
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของ“ Theano vs TensorFlow” แล้วเราจะติดต่อกลับไป