Theano vs TensorFlow: การเปรียบเทียบอย่างรวดเร็วของกรอบ



บทความเกี่ยวกับ Theano vs TensorFlow นี้จะให้การเปรียบเทียบที่สั้นและชัดเจนระหว่างสองกรอบงานและช่วยให้คุณเลือกกรอบที่เหมาะสมกับคุณ

ยุคของ การเรียนรู้เชิงลึก และ อยู่ที่จุดสูงสุด มันกำลังจะสร้าง 2.3 ล้าน งานภายในปี 2020 ด้วยเฟรมเวิร์กใหม่ ๆ ที่กำลังจะมาถึงทุกเดือน TensorFlow และ Theano ก็อยู่ที่นั่นมาระยะหนึ่งแล้วและก็ได้รับความนิยมอย่างมากมายเช่นกัน ดังนั้นในบทความ Theano vs TensorFlow นี้ฉันจะพูดถึงหัวข้อต่อไปนี้:

Theano คืออะไร?

Theano สามารถกำหนดให้เป็นไลบรารีสำหรับ คอมพิวเตอร์วิทยาศาสตร์ . ได้รับการพัฒนาโดยUniversité de Montréalและวางจำหน่ายตั้งแต่ปี 2550





theano-logo

ช่วยให้คุณสามารถกำหนดปรับแต่งและประเมินนิพจน์ทางคณิตศาสตร์ที่เกี่ยวข้องกับอาร์เรย์หลายมิติได้อย่างมีประสิทธิภาพ สามารถทำงานได้ทั้งบน 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” แล้วเราจะติดต่อกลับไป