Theano vs TensorFlow: So sánh nhanh các khuôn khổ



Bài viết này trên Theano vs TensorFlow sẽ cung cấp cho bạn một so sánh ngắn gọn và rõ ràng giữa hai Framework và giúp bạn chọn một cái phù hợp với mình.

Kỷ nguyên của Học kĩ càng và đang ở đỉnh cao. Nó sẽ tạo ra 2,3 triệu Việc làm vào năm 2020. Với các khung công tác mới ra mắt hàng tháng, TensorFlow và Theano đã ở đó một thời gian và cũng đã trở nên phổ biến. Vì vậy, trong bài viết Theano vs TensorFlow này, tôi sẽ thảo luận về các chủ đề sau:

Theano là gì?

Theano có thể được định nghĩa là một thư viện cho Máy tính khoa học . Nó được phát triển bởi Université de Montréal và đã có mặt từ năm 2007.





theano-logo

Nó cho phép bạn xác định, tối ưu hóa và đánh giá các biểu thức toán học liên quan đến mảng đa chiều một cách hiệu quả. Nó có thể chạy trên cả CPU và GPU.



cách thoát chương trình trong java

TensorFlow là gì?

TensorFlow là một thư viện phần mềm mã nguồn mở của Google Brain để lập trình luồng dữ liệu trong nhiều nhiệm vụ.

Nó là một thư viện toán học biểu tượng được sử dụng cho các ứng dụng học máy như .



Theano vs TensorFlow

Chúng tôi sẽ so sánh Theano và TensorFlow dựa trên các Chỉ số sau:

Phổ biến:

Theano TensorFlow
Theano là một Framework cũ là không phổ biến như vậy ở giữa , Các nhà nghiên cứu. Nó đã từng là một thờiTensorFlow là tay của nổi tiếng nhất Deep Learning Framework và được sử dụng trong rất nhiều nghiên cứu.

Tốc độ thực thi:

Theano TensorFlow
Thực hiện công việc nhanh hơn TensorFlow. Đặc biệt là các Tác vụ GPU đơn chạy rất nhanh trong Theano.Tốc độ thực thi của TensorFlow chậm hơn so với Theano, nhưng trong Tác vụ đa GPU, nó dẫn đầu.

Lợi ích Công nghệ:

Theano TensorFlow
Nó hỗ trợ một loạt các hoạt động.

Theano tính toán gradient khi xác định lỗi.

Bạn có toàn quyền kiểm soát Trình tối ưu hóa vì bạn phải viết mã khó.

TensorFlow vẫn phải ngang bằng với Theano.

Đó không phải là trường hợp của TensorFlow

Nó cho phép truy cập vào rất nhiều Trình tối ưu hóa tốt. Điều này làm cho việc mã hóa dễ dàng hơn

Khả năng tương thích:

Theano TensorFlow
Keras một Thư viện học sâu tuyệt vời tương thích với Theano. Nó tích hợp tốt.

Nó có Hỗ trợ Windows gốc.

Nó cũng hỗ trợ các trình bao bọc cấp cao như Lasagne.

Nhưng trong trường hợp của TensorFlow, nó vẫn chưa hoàn toàn ở đó. Tuy nhiên, trong v2.0, điều này sẽ không xảy ra.

Hiện tại, TensorFlow thiếu Hỗ ​​trợ này.

Không hỗ trợ cho Lasagne.

Sự đóng góp cho cộng đồng:

Theano TensorFlow
Theano có Hỗ trợ cộng đồng lớn hơn như trước TensorFlow.

Nó có nhiều tài liệu hơn TensorFlow

Hỗ trợ cộng đồng trực tuyến của TensorFlow đang tăng lên nhanh chóng với mức độ phổ biến của nó.

Tài liệu tương đối ít hơn.

Khả năng đọc mã:

Hãy để chúng tôi So sánh Theano và TensorFlow dựa trên Mã của họ. Ở đây tôi đang lấy một Tập lệnh ví dụ cơ bản, trong đó chúng tôi sẽ lấy một số dữ liệu giả mạo và khởi tạo dữ liệu phù hợp nhất cho dữ liệu đó để nó có thể dự đoán các điểm dữ liệu trong tương lai.

Mã Theano:

import theano import theano.tensor as T import numpy # Một lần nữa, kiếm 100 điểm trong numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0,100, 0,200], x_data) + 0.3 # Tăng cường mô hình 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)), name = 'W') y = W.dot (X) + b # Tính toán độ dốc WRT sai số trung bình cho mỗi tham số cost = T.mean (T.sqr (y - Y)) gradientW = T.grad (cost = chi phí, wrt = W) gradientB = T.grad (cost = chi phí, wrt = b) các cập nhật = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] train = theano. function (input = [X, Y], outputs = cost, Updates = update, allow_input_downcast = True) cho tôi trong xrange (0, 201): train (x_data, y_data) print W.get_value (), b.get_value ()

Mã TensorFlow tương đương:

import tensorflow dưới dạng tf import numpy as np # Tạo 100 điểm dữ liệu giả trong NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Đầu vào ngẫu nhiên y_data = np.dot ([0,100, 0,200], x_data) + 0,300 # Xây dựng mô hình tuyến tính. 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 # Giảm thiểu các sai số bình phương. Loss = tf.reduce_mean (tf.square (y - y_data)) Optimizer = tf.train.GradientDescentOptimizer (0.5) train = Optimizer.minimize (mất) # Để khởi tạo các biến. init = tf.initialize_all_variables () # Khởi chạy biểu đồ sess = tf.Session () sess.run (init) # Chỉnh mặt phẳng. for step in xrange (0, 201): sess.run (train) if step% 20 == 0: print step, sess.run (W), sess.run (b) # Học phù hợp nhất là W: [[0.100 0,200]], b: [0,300]

Chiều dài khôn ngoan Cả hai Bộ luật gần như Giống không có nhiều sự khác biệt. Hai được tạo giống hệt nhau mảng mô tả đầu vào và đầu ra đích. Nhưng nếu chúng ta xem xét Khởi tạo mô hình.

Khởi tạo mô hình:

# 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)), name = 'W') y = W.dot (X) + b

Như bạn có thể thấy ở đây rằng TensorFlow không yêu cầu bất kỳ Xử lý Đặc biệt nào đối với các Biến X và Y. Mặt khác, Theano yêu cầu nỗ lực thêm để đảm bảo rằng các biến Đầu vào tượng trưng vào Chức năng. Định nghĩa của b và W là giải thích và cũng đẹp hơn.

Học tập: Tối ưu hóa

# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) Optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = Optimizer.minimize (loss) # (3) # Theano cost = T.mean (T.sqr (y - Y)) # (1) gradientW = T.grad (cost = chi phí, wrt = W) # (2) gradientB = T.grad (cost = chi phí, wrt = b) # (2) các bản cập nhật = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] # (2) train = theano. function (đầu vào = [X, Y], đầu ra = chi phí, cập nhật = các bản cập nhật, allow_input_downcast = True) # (3)

Đối với (1) MSE gần như giống nhau đối với Theano và TensorFlow.

Đối với (2) Xác định Trình tối ưu hóa dễ dàng và đơn giản như trong trường hợp TensorFlow, nhưng Theanno cung cấp cho bạn rất nhiều Quyền kiểm soát so với Trình tối ưu hóa mặc dù nó khá dài và tăng Nỗ lực xác minh.

Cho 3) Chức năng đào tạo Mã gần như tương tự

Cơ quan đào tạo:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) for step in xrange (0, 201): sess.run (train) # Theano for i in xrange (0, 201): train (x_data, y_data) print W.get_value (), b.get_value ()

Mã cho Đào tạo gần như giống nhau, nhưng Đóng gói Thực thi Đồ thị trong Đối tượng Phiên là Sạch hơn về mặt khái niệm hơn Theano.

Phán quyết cuối cùng: Theano vs TensorFlow

Trên một Lưu ý kết luận, có thể nói rằng cả hai API đều có giao diện tương tự . Nhưng TensorFlow tương đối dễ dàng hơn yo sử dụng vì nó cung cấp rất nhiều Công cụ Giám sát và Gỡ lỗi. Theano dẫn đầu Khả năng sử dụng và tốc độ , nhưng TensorFlow phù hợp hơn với Triển khai. Thủ tục giấy tờ hoặc Tài liệu cho Theano không chỉ là TensorFlow và TensorFlow là một Ngôn ngữ mới mà mọi người không có nhiều tài nguyên để bắt đầu. Các thư viện sâu mã nguồn mở như Keras, Lasagne và Blocks đã được xây dựng trên đầu trang của Theano.

Tôi hy vọng sự so sánh này là đủ để bạn quyết định chọn khung công tác nào, hãy xem của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Chương trình Đào tạo Chứng nhận này do các chuyên gia trong ngành phụ trách theo yêu cầu và nhu cầu của ngành. Bạn sẽ nắm vững các khái niệm như hàm SoftMax, Mạng thần kinh tự động mã hóa, Máy Boltzmann hạn chế (RBM) và làm việc với các thư viện như Keras & TFLearn.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của “Theano vs TensorFlow” và chúng tôi sẽ liên hệ lại với bạn.