Theano vs TensorFlow: Μια γρήγορη σύγκριση των πλαισίων



Αυτό το άρθρο σχετικά με το Theano εναντίον TensorFlow θα σας προσφέρει μια σύντομη και τραγανή σύγκριση μεταξύ των δύο πλαισίων και θα σας βοηθήσει να επιλέξετε αυτό που σας ταιριάζει.

Η εποχή του Βαθιά μάθηση και είναι στο αποκορύφωμά του. Θα δημιουργήσει 2,3 εκατομμύρια Θέσεις εργασίας έως το 2020. Με νέα πλαίσια να εμφανίζονται κάθε μήνα, οι TensorFlow και Theano βρίσκονται εδώ και λίγο και έχουν αποκτήσει επίσης μεγάλη δημοτικότητα. Έτσι σε αυτό το άρθρο Theano εναντίον TensorFlow, θα συζητήσω τα ακόλουθα θέματα:

Τι είναι το Theano;

Το Theano μπορεί να οριστεί ως βιβλιοθήκη για Επιστημονική Πληροφορική . Αναπτύχθηκε από το Université de Montréal και είναι διαθέσιμο από το 2007.





theano-logo

Σας επιτρέπει να ορίσετε, να βελτιστοποιήσετε και να αξιολογήσετε τις μαθηματικές εκφράσεις που περιλαμβάνουν πολυδιάστατους πίνακες αποτελεσματικά. Μπορεί να τρέξει τόσο σε CPU όσο και σε GPU.



Τι είναι το TensorFlow;

TensorFlow είναι μια βιβλιοθήκη λογισμικού ανοιχτού κώδικα από το Google Brain για προγραμματισμό ροής δεδομένων σε ένα εύρος εργασιών.

Είναι μια συμβολική βιβλιοθήκη μαθηματικών που χρησιμοποιείται για εφαρμογές μηχανικής μάθησης όπως .



Theano εναντίον TensorFlow

Θα συγκρίνουμε Theano εναντίον TensorFlow με βάση τις ακόλουθες μετρήσεις:

Δημοτικότητα:

Θεανώ TensorFlow
Το Theano είναι ένα παλιό πλαίσιο όχι τόσο δημοφιλές αναμεταξύ , Ερευνητές. Ήταν κάποτεΤο TensorFlow είναι το κάτω χέρι πιο διάσημα Το Deep Learning Framework και χρησιμοποιείται σε πολλές έρευνες.

Ταχύτητα εκτέλεσης:

Θεανώ TensorFlow
Εκτελεί εργασίες ταχύτερα από το TensorFlow. Ειδικά οι μεμονωμένες εργασίες GPU εκτελούνται πολύ γρήγορα στο Theano.Η ταχύτητα εκτέλεσης του TensorFlow είναι χαμηλότερη σε σύγκριση με το Theano, αλλά στις εργασίες πολλαπλών GPU παίρνει το προβάδισμα.

Τεχνολογικά οφέλη:

πώς να δημιουργήσετε πακέτο σε java
Θεανώ TensorFlow
Υποστηρίζει ένα ευρύ φάσμα λειτουργιών.

Το Theano υπολογίζει την κλίση κατά τον προσδιορισμό του λάθος.

Έχετε τον πλήρη έλεγχο των Optimizer καθώς πρέπει να τον κωδικοποιήσετε σκληρά.

Το TensorFlow πρέπει ακόμη να ταιριάζει με τον Theano.

Αυτό δεν ισχύει για το TensorFlow

Παρέχει πρόσβαση σε πολλά καλά Optimizer από το κουτί. Αυτό καθιστά ευκολότερη την κωδικοποίηση

Συμβατότητα:

Θεανώ TensorFlow
Το Keras, μια εκπληκτική βιβλιοθήκη Deep Learning είναι συμβατή με το Theano. Ενσωματώνεται καλά.

Διαθέτει εγγενή υποστήριξη των Windows.

Υποστηρίζει επίσης υψηλής ποιότητας περιτυλίγματα όπως το Lasagne.

Όμως, στην περίπτωση του TensorFlow, δεν είναι ακόμα αρκετά εκεί. Ωστόσο, στο v2.0 αυτό δεν θα συμβεί.

Επί του παρόντος, το TensorFlow δεν διαθέτει αυτήν την υποστήριξη.

Δεν υπάρχει υποστήριξη για Lasagne.

Υποστήριξη κοινότητας:

Θεανώ TensorFlow
Το Theano έχει μεγαλύτερη υποστήριξη από την κοινότητα καθώς ήρθε πριν από το TensorFlow.

Έχει περισσότερα έγγραφα από το TensorFlow

Η διαδικτυακή υποστήριξη κοινότητας του TensorFlow αυξάνεται ραγδαία με τη δημοτικότητά της.

java ρηχό αντίγραφο εναντίον βαθύ αντίγραφο

Η τεκμηρίωση είναι συγκριτικά μικρότερη.

Αναγνωσιμότητα κώδικα:

Ας συγκρίνουμε Theano εναντίον TensorFlow με βάση τον Κώδικα τους. Εδώ παίρνω ένα βασικό παράδειγμα σεναρίου όπου θα πάρουμε μερικά δεδομένα Phony και θα προετοιμάσουμε την καλύτερη εφαρμογή για αυτά τα δεδομένα, ώστε να προβλέψει μελλοντικά σημεία δεδομένων.

Κωδικός Theano:

εισαγωγή theano import theano.tensor ως T import 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 the 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) ενημερώσεις = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] train = theano.function (εισόδους = [X, Y], έξοδοι = κόστος, ενημερώσεις = ενημερώσεις, allow_input_downcast = True) για i in xrange (0, 201): τρένο (x_data, y_data) εκτύπωση W.get_value (), b.get_value ()

Ισοδύναμος κωδικός TensorFlow:

εισαγωγή 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. Μεταβλητή (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. Συνεδρία () sess.run (init) # Τοποθετήστε το επίπεδο. για βήμα στην xrange (0, 201): sess.run (τρένο) αν το βήμα% 20 == 0: βήμα εκτύπωσης, sess.run (W), sess.run (b) # Μάθετε την καλύτερη εφαρμογή είναι W: [[0.100 0,200]], β: [0,300]

Μήκος σοφό Και οι δύο κώδικες είναι σχεδόν Παρόμοιος δεν υπάρχει μεγάλη διαφορά. Δύο πανομοιότυπα πίνακες που περιγράφουν την είσοδο και την έξοδο στόχο. Αλλά αν ρίξουμε μια ματιά στο μοντέλο 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)), name = 'W') y = W.dot (X) + b

Όπως μπορείτε να δείτε εδώ ότι το TensorFlow δεν απαιτεί ειδική μεταχείριση των μεταβλητών X και Y. Από την άλλη πλευρά, το Theano απαιτεί μια επιπλέον προσπάθεια για να βεβαιωθεί ότι οι μεταβλητές είναι Συμβολικές εισόδους στη λειτουργία. Ο ορισμός των b και W είναι επεξηγηματικός και επίσης ωραιότερος.

Η μάθηση: Βελτιστοποίηση

# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0,5) # (2) train = optimizer.minimize (loss) # (3) # Κόστος Theano = T.mean (T.sqr (y - Y)) # (1) gradientW = T.grad (cost = cost, wrt = W) # (2) gradientB = T.grad (κόστος = κόστος, wrt = b) # (2) ενημερώσεις = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] # (2) train = theano.function (inputs = [X, Y], outputs = cost, ενημερώσεις = ενημερώσεις, allow_input_downcast = True) # (3)

Για (1) το MSE είναι σχεδόν το ίδιο για το Theano εναντίον TensorFlow.

Για (2) Ορισμός του Βελτιστοποιητής είναι εύκολο και απλό όπως συμβαίνει στην περίπτωση του TensorFlow, αλλά το Theanno σάς προσφέρει μεγάλο έλεγχο έναντι των βελτιστοποιητών, αν και είναι αρκετά μακρύ και αυξάνει την προσπάθεια επαλήθευσης.

Για (3) Εκπαιδευτική λειτουργία ο Κώδικας είναι σχεδόν Παρόμοιος

Εκπαιδευτικό σώμα:

# TensorFlow init = tf.initialize_all_variables () sess = tf. Συνεδρία () sess.run (init) για βήμα στο xrange (0, 201): sess.run (τρένο) # Theano for i in xrange (0, 201): τρένο (x_data, y_data) εκτύπωση W.get_value (), b.get_value ()

Ο κωδικός για Εκπαίδευση είναι σχεδόν πανομοιότυπος, αλλά η Ενσωμάτωση της εκτέλεσης γραφήματος στο αντικείμενο συνεδρίας είναι Εννοιολογικά καθαρότερο από το Theano.

Τελική ετυμηγορία: Theano εναντίον TensorFlow

Σε μια τελική σημείωση, μπορεί να ειπωθεί ότι και τα δύο API έχουν ένα παρόμοια διεπαφή . Αλλά το TensorFlow είναι συγκριτικά ευκολότερη Μπορείτε να χρησιμοποιήσετε καθώς παρέχει πολλά εργαλεία παρακολούθησης και εντοπισμού σφαλμάτων. Ο Theano παίρνει το προβάδισμα Ευχρηστία και ταχύτητα , αλλά το TensorFlow είναι πιο κατάλληλο για ανάπτυξη. Έγγραφα ή Τεκμηρίωση για το Theano είναι κάτι περισσότερο από το TensorFlow και το TensorFlow είναι μια νέα γλώσσα που οι άνθρωποι δεν έχουν πολλούς πόρους, για να ξεκινήσουν. Βιβλιοθήκες ανοιχτού κώδικα όπως Keras, Lasagne και Blocks έχουν γίνει χτισμένο πάνω από Θεανώ.

Ελπίζω ότι αυτή η σύγκριση ήταν αρκετή για να αποφασίσετε ποιο πλαίσιο θα επιλέξετε, ρίξτε μια ματιά στο από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Αυτή η εκπαίδευση πιστοποίησης επιμελείται από επαγγελματίες του κλάδου σύμφωνα με τις απαιτήσεις και τις απαιτήσεις του κλάδου. Θα κυριαρχήσετε τις έννοιες όπως η λειτουργία SoftMax, το Autoencoder Neural Networks, το Restricted Boltzmann Machine (RBM) και θα συνεργαστείτε με βιβλιοθήκες όπως το Keras & TFLearn.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων του 'Theano vs TensorFlow' και θα επικοινωνήσουμε μαζί σας.