TensorFlow Tutorial - Βαθιά μάθηση χρησιμοποιώντας TensorFlow



Το σεμινάριο TensorFlow είναι το τρίτο ιστολόγιο της σειράς. Περιλαμβάνει όλα τα βασικά του TensorFlow. Μιλά επίσης για το πώς να δημιουργήσετε ένα απλό γραμμικό μοντέλο.

Έχω σχεδιάσει αυτό το σεμινάριο TensorFlow για επαγγελματίες και ενθουσιώδεις που ενδιαφέρονται να εφαρμόσουν τον αλγόριθμο Deep Learning χρησιμοποιώντας το TensorFlow για την επίλυση διαφόρων προβλημάτων. Το TensorFlow είναι μια βιβλιοθήκη βαθιάς μάθησης ανοιχτού κώδικα που βασίζεται στην έννοια των γραφημάτων ροής δεδομένων για κτίρια μοντέλων. Σας επιτρέπει να δημιουργήσετε νευρωνικά δίκτυα μεγάλης κλίμακας με πολλά επίπεδα.Η εκμάθηση της χρήσης αυτής της βιβλιοθήκης είναι επίσης ένα θεμελιώδες μέρος του .Ακολουθούν τα θέματα που θα συζητηθούν σε αυτό το ιστολόγιο εκπαιδευτικών TensorFlow:

  • Τι είναι το TensorFlow
  • Βασικά κώδικα TensorFlow
  • TensorFlow UseCase

Τι είναι το Tensors;

Σε αυτό το σεμινάριο TensorFlow, πριν μιλήσουμε για το TensorFlow, ας καταλάβουμε πρώτα τι είναι οι τανυστές . Το Tensors δεν είναι παρά ένα de facto για την αναπαράσταση των δεδομένων στη βαθιά μάθηση.





Tensors - TensorFlow Tutorial - EdurekaΌπως φαίνεται στην παραπάνω εικόνα, οι τανυστές είναι απλώς πολυδιάστατοι πίνακες, που σας επιτρέπουν να αναπαριστάτε δεδομένα με υψηλότερες διαστάσεις. Σε γενικές γραμμές, η Deep Learning ασχολείται με σύνολα δεδομένων υψηλών διαστάσεων, όπου οι διαστάσεις αναφέρονται σε διαφορετικά χαρακτηριστικά που υπάρχουν στο σύνολο δεδομένων. Στην πραγματικότητα, το όνομα 'TensorFlow' προήλθε από τις λειτουργίες που εκτελούν τα νευρωνικά δίκτυα στους τανυστές. Είναι κυριολεκτικά μια ροή τανυστών. Από τότε, έχετε καταλάβει τι είναι τανυστές, ας προχωρήσουμε σε αυτό το σεμινάριο TensorFlow και να κατανοήσουμε - τι είναι το TensorFlow;

Τι είναι το TensorFlow;

Το TensorFlow είναι μια βιβλιοθήκη που βασίζεται στην Python και παρέχει διαφορετικούς τύπους λειτουργιών για την εφαρμογή μοντέλων Deep Learning. Όπως αναφέρθηκε προηγουμένως, ο όρος TensorFlow αποτελείται από δύο όρους - Tensor & Flow:



Στο TensorFlow, ο όρος tensor αναφέρεται στην αναπαράσταση δεδομένων ως πολυδιάστατη συστοιχία, ενώ ο όρος ροή αναφέρεται στη σειρά λειτουργιών που εκτελεί κανείς σε τανυστές όπως φαίνεται στην παραπάνω εικόνα.

Τώρα έχουμε καλύψει αρκετό υπόβαθρο σχετικά με το TensorFlow.



Στη συνέχεια, σε αυτό το σεμινάριο TensorFlow θα συζητήσουμε για τα βασικά κώδικα του TensorFlow.

TensorFlow Tutorial: Βασικά κώδικα

Βασικά, η συνολική διαδικασία σύνταξης ενός προγράμματος TensorFlow περιλαμβάνει δύο βήματα:

  1. Δημιουργία υπολογιστικού γραφήματος
  2. Εκτέλεση υπολογιστικού γραφήματος

Επιτρέψτε μου να σας εξηγήσω τα παραπάνω δύο βήματα ένα προς ένα:

1. Δημιουργία υπολογιστικού γραφήματος

Ετσι, τι είναι ένα υπολογιστικό γράφημα; Λοιπόν, ένα υπολογιστικό γράφημα είναι μια σειρά λειτουργιών TensorFlow που είναι διατεταγμένοι ως κόμβοι στο γράφημα. Κάθε κόμβος λαμβάνει 0 ή περισσότερους τανυστές ως είσοδο και παράγει έναν τανυστή ως έξοδο. Επιτρέψτε μου να σας δώσω ένα παράδειγμα ενός απλού υπολογιστικού γραφήματος που αποτελείται από τρεις κόμβους - προς το , σι & ντο όπως φαίνεται παρακάτω:

Επεξήγηση του παραπάνω υπολογιστικού γραφήματος:

  • Σταθεροί κόμβοιχρησιμοποιούνται για την αποθήκευση σταθερών τιμών καθώς χρειάζεται μηδενική είσοδο, αλλά παράγει τις αποθηκευμένες τιμές ως έξοδο. Στο παραπάνω παράδειγμα, τα a και b είναι σταθεροί κόμβοι με τιμές 5 και 6 αντίστοιχα.

  • Ο κόμβος c αντιπροσωπεύει τη λειτουργία πολλαπλασιασμού σταθερού κόμβου a με b. Επομένως, η εκτέλεση του κόμβου c θα έχει ως αποτέλεσμα τον πολλαπλασιασμό του κόμβου const a & b.

Βασικά, μπορεί κανείς να σκεφτεί ένα υπολογιστικό γράφημα ως έναν εναλλακτικό τρόπο σύλληψης μαθηματικών υπολογισμών που λαμβάνει χώρα σε ένα πρόγραμμα TensorFlow. Οι λειτουργίες που εκχωρούνται σε διαφορετικούς κόμβους ενός Υπολογιστικού Γράφου μπορούν να εκτελεστούν παράλληλα, παρέχοντας έτσι καλύτερη απόδοση σε όρους υπολογισμών.

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

2. Εκτέλεση υπολογιστικού γραφήματος

Ας πάρουμε το προηγούμενο παράδειγμα υπολογιστικού γραφήματος και να κατανοήσουμε πώς να το εκτελέσουμε. Ακολουθεί ο κωδικός από το προηγούμενο παράδειγμα:

Παράδειγμα 1:

εισαγωγή tensorflow as tf # Build a chart a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Τώρα, για να λάβουμε την έξοδο του κόμβου c, πρέπει να εκτελέσουμε το υπολογιστικό γράφημα μέσα σε ένα συνεδρία . Η περίοδος σύνδεσης τοποθετεί τις λειτουργίες γραφήματος σε Συσκευές, όπως CPU ή GPU και παρέχει μεθόδους για την εκτέλεση τους.

Μια περίοδος λειτουργίας ενσωματώνει τον έλεγχο και την κατάσταση του χρόνου εκτέλεσης του TensorFlow, δηλαδή αποθηκεύει τις πληροφορίες σχετικά με τη σειρά με την οποία θα εκτελεστούν όλες οι λειτουργίες και περνά το αποτέλεσμα της ήδη υπολογισμένης λειτουργίας στην επόμενη λειτουργία στον αγωγό. Επιτρέψτε μου να σας δείξω πώς να εκτελέσετε το παραπάνω υπολογιστικό γράφημα σε μια περίοδο σύνδεσης (Η εξήγηση κάθε γραμμής κώδικα προστέθηκε ως σχόλιο):

# Δημιουργία του αντικειμένου περιόδου λειτουργίας sess = tf. Συνεδρία () # Εκτελέστε το γράφημα μέσα σε μια περίοδο λειτουργίας και αποθηκεύστε την έξοδο σε μια μεταβλητή output_c = sess.run (c) # Εκτυπώστε την έξοδο του κόμβου c print (output_c) # Κλείστε τη συνεδρία για να ελευθερώστε μερικούς πόρους sess.close ()
 Παραγωγή: 30

Λοιπόν, αυτό αφορούσε τη συνεδρία και την εκτέλεση ενός υπολογιστικού γραφήματος μέσα σε αυτήν. Τώρα, ας μιλήσουμε για τις μεταβλητές και τα σύμβολα κράτησης θέσης που θα χρησιμοποιούμε εκτενώς κατά τη δημιουργία μοντέλου βαθιάς μάθησης χρησιμοποιώντας το TensorFlow.

Σταθερές, placeholder και μεταβλητές

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

Placeholder:

Μια σταθερά TensorFlow σάς επιτρέπει να αποθηκεύετε μια τιμή, αλλά τι γίνεται αν θέλετε οι κόμβοι σας να λαμβάνουν εισόδους κατά την εκτέλεση; Για αυτό το είδος λειτουργικότητας, χρησιμοποιούνται σύμβολα κράτησης θέσης που επιτρέπουν στο γράφημα να λαμβάνει εξωτερικές εισόδους ως παραμέτρους. Βασικά, ένα σύμβολο κράτησης θέσης είναι μια υπόσχεση να παρέχει μια τιμή αργότερα ή κατά τη διάρκεια του χρόνου εκτέλεσης. Επιτρέψτε μου να σας δώσω ένα παράδειγμα για να απλοποιήσετε τα πράγματα:

εισαγωγή tensorflow ως tf # Δημιουργία placeholder a = tf. placeholder (tf.float32) b = tf. placeholder (tf.float32) # Εκχώρηση λειτουργίας πολλαπλασιασμού w.r.t. a & ampamp b to node mul mul = a * b # Δημιουργία αντικειμένου συνεδρίας sess = tf. Συνεδρία () # Εκτέλεση mul με μεταβίβαση των τιμών [1, 3] [2, 4] για a και b αντίστοιχα έξοδος = sess.run ( mul, {a: [1,3], b: [2, 4]}) εκτύπωση ('Πολλαπλασιασμός ab:', έξοδος)
 Παραγωγή: [2. 12.]

Σημεία που πρέπει να θυμάστε placeholder:

  • Τα σύμβολα κράτησης θέσης δεν έχουν αρχικοποιηθεί και δεν περιέχουν δεδομένα.
  • Κάποιος πρέπει να παρέχει εισόδους ή τροφοδοσίες στο placeholder που λαμβάνονται υπόψη κατά τη διάρκεια του χρόνου εκτέλεσης.
  • Η εκτέλεση ενός placeholder χωρίς εισαγωγή δημιουργεί σφάλμα.

Τώρα, ας προχωρήσουμε και να καταλάβουμε - ποιες είναι οι μεταβλητές;

Μεταβλητές

Στη βαθιά μάθηση, τα σύμβολα κράτησης θέσης χρησιμοποιούνται για τη λήψη αυθαίρετων στοιχείων στο μοντέλο ή το γράφημα. Εκτός από τη λήψη εισόδου, πρέπει επίσης να τροποποιήσετε το γράφημα έτσι ώστε να μπορεί να παράγει νέες εξόδους w.r.t. ίδιες εισόδους. Για αυτό θα χρησιμοποιείτε μεταβλητές. Με λίγα λόγια, μια μεταβλητή σάς επιτρέπει να προσθέσετε τέτοιες παραμέτρους ή κόμβο στο γράφημα που είναι εκπαιδευτή, δηλαδή η τιμή μπορεί να τροποποιηθεί κατά τη διάρκεια μιας περιόδου. Οι μεταβλητές καθορίζονται παρέχοντας την αρχική τιμή και τον τύπο τους όπως φαίνεται παρακάτω:

var = tf.Variable ([0,4], dtype = tf.float32)

Σημείωση:

  • Σε περίπτωση που δεν έχετε παράσχει ρητά τον τύπο δεδομένων, το TensorFlow θα συμπεράνει τον τύπο της σταθεράς / μεταβλητής από την αρχική τιμή.
  • Το TensorFlow έχει πολλούς από τους δικούς του τύπους δεδομένων όπως tf.float32 , tf.int32 και τα λοιπά. Μπορείτε να ανατρέξετε σε όλα αυτά εδώ .

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

init = tf.global_variables_initializer () sess.run (init)

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

Σημείωση: Οι μεταβλητές TensorFlow είναι buffer στη μνήμη που περιέχουν τανυστές, αλλά σε αντίθεση με τους κανονικούς τανυστές που δημιουργούνται μόνο όταν εκτελείται ένα γράφημα και διαγράφονται αμέσως μετά, οι μεταβλητές επιβιώνουν σε πολλές εκτελέσεις ενός γραφήματος.

Τώρα που έχουμε καλύψει αρκετά βασικά στοιχεία του TensorFlow, ας προχωρήσουμε και καταλάβουμε πώς να εφαρμόσουμε ένα μοντέλο γραμμικής παλινδρόμησης χρησιμοποιώντας το TensorFlow.

Μοντέλο γραμμικής παλινδρόμησης με χρήση του TensorFlow

Το μοντέλο γραμμικής παλινδρόμησης χρησιμοποιείται για την πρόβλεψη της άγνωστης τιμής μιας μεταβλητής (εξαρτώμενη μεταβλητή) από τη γνωστή τιμή άλλων μεταβλητών (ανεξάρτητη μεταβλητή) χρησιμοποιώντας εξίσωση γραμμικής παλινδρόμησης όπως φαίνεται παρακάτω:

Επομένως, για τη δημιουργία ενός γραμμικού μοντέλου, χρειάζεστε:

τι είναι το διάνυσμα στην Ιάβα
  1. Εξαρτώμενη ή μεταβλητή εξόδου (Y)
  2. Μεταβλητή κλίσης (w)
  3. Y - Παρεμβολή ή προκατάληψη (β)
  4. Ανεξάρτητη ή μεταβλητή εισαγωγής (X)

Ας αρχίσουμε λοιπόν να δημιουργούμε γραμμικό μοντέλο χρησιμοποιώντας το TensorFlow:

Αντιγράψτε τον κωδικό κάνοντας κλικ στο παρακάτω κουμπί:

# Δημιουργία μεταβλητής για παράμετρο κλίσης (W) με αρχική τιμή 0,4 W = tf. Μεταβλητή ([. 4], tf.float32) # Δημιουργία μεταβλητής για παράμετρος πόλωσης (b) με αρχική τιμή ως -0,4 b = tf. Μεταβλητή ( [-0.4], tf.float32) # Δημιουργία placeholder για παροχή εισόδου ή ανεξάρτητης μεταβλητής, που υποδηλώνεται με 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.

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

Λειτουργία απώλειας - Επικύρωση μοντέλου

Μια συνάρτηση απώλειας μετρά πόσο μακριά διαφέρει η τρέχουσα έξοδος του μοντέλου από αυτήν της επιθυμητής ή στοχευόμενης εξόδου. Θα χρησιμοποιήσω μια συνάρτηση απώλειας που χρησιμοποιείται πιο συχνά για το μοντέλο γραμμικής παλινδρόμησης που ονομάζεται Άθροισμα Σφάλματος τετραγώνου ή SSE. Υπολογίστηκε SSE w.r.t. έξοδος μοντέλου (αναπαριστάται με γραμμικό μοντέλο) και επιθυμητή ή έξοδος στόχου (y) ως:

y = tf.placeholder (tf.float32) error = linear_model - y squared_errors = tf.square (error) loss = tf.reduce_sum (squared_errors) εκτύπωση (sess.run (απώλεια, {x: [1,2,3,4 ], ε: [2, 4, 6, 8]})
 Παραγωγή: 90.24

Όπως μπορείτε να δείτε, έχουμε μια υψηλή αξία απώλειας. Επομένως, πρέπει να προσαρμόσουμε τα βάρη μας (W) και τη μεροληψία (b) έτσι ώστε να μειώσουμε το σφάλμα που λαμβάνουμε.

τf.train API - Εκπαίδευση του Μοντέλου

Το TensorFlow παρέχει βελτιστοποιητές που αλλάζουν αργά κάθε μεταβλητή προκειμένου να ελαχιστοποιηθεί η λειτουργία απώλειας ή το σφάλμα. Ο απλούστερος βελτιστοποιητής είναι κλίση κατάβασης . Τροποποιεί κάθε μεταβλητή ανάλογα με το μέγεθος του παραγώγου της απώλειας σε σχέση με αυτή τη μεταβλητή.

# Δημιουργία μιας παρουσίας βελτιστοποιητή κατάβασης διαβάθμισης optimizer = tf.train.GradientDescentOptimizer (0.01) train = optimizer.minimize (loss) for i in range (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 και εκπαιδεύστε το για να πάρετε την επιθυμητή έξοδο.

Τώρα που γνωρίζετε για τη βαθιά μάθηση, ρίξτε μια ματιά στο από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Το μάθημα Εκπαίδευσης Edureka Deep Learning with TensorFlow Certification βοηθά τους εκπαιδευόμενους να γίνουν ειδικοί στην εκπαίδευση και τη βελτιστοποίηση βασικών και συνελικτικών νευρωνικών δικτύων χρησιμοποιώντας έργα και εργασίες σε πραγματικό χρόνο, μαζί με έννοιες όπως η λειτουργία SoftMax, το Auto-encoder Neural Networks, το Restricted Boltzmann Machine (RBM).

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