Το TensorFlow είναι το κορυφαίο πλαίσιο της Google για μηχανική μάθηση και κάθε νέα έκδοση φέρνει ένα ευρύ φάσμα δυνατοτήτων και λειτουργιών. Αφού ανεβείτε στην καμπύλη εκμάθησης, μπορείτε να γράψετε εξελιγμένες εφαρμογές μηχανικής μάθησης και να τις εκτελέσετε με υψηλή ταχύτητα.
Αλλά η άνοδος της καμπύλης εκμάθησης δεν είναι εύκολη – με τη μεγάλη δύναμη έρχεται και μεγάλη πολυπλοκότητα. Για να σας βοηθήσουμε στην ανάβασή σας, πρέπει να γνωρίζετε τους τύπους δεδομένων του TensorFlow, το βοηθητικό πρόγραμμα TensorBoard και την ανάπτυξη εφαρμογών στη Μηχανή Εκμάθησης Μηχανών της Google.
Βασικοί τύποι δεδομένων στο TensorFlow
Μπορείτε να γράψετε εφαρμογές TensorFlow σε πολλές διαφορετικές γλώσσες, όπως Python, C++ και Java. Αλλά ανεξάρτητα από τη γλώσσα που χρησιμοποιείτε, πρέπει να είστε εξοικειωμένοι με μια σειρά τύπων δεδομένων ειδικά για το TensorFlow:
- Τανυστές και σύμβολα θέσης: Ο τανυστής είναι ένα παράδειγμα της κλάσης Tensor και χρησιμεύει ως πολυδιάστατος πίνακας γενικής χρήσης. Ένα σύμβολο κράτησης θέσης είναι επίσης Tensor, αλλά αντί να αρχικοποιείται σε κώδικα, λαμβάνει δεδομένα από μια περίοδο λειτουργίας που θα είναι έγκυρα κατά τη διάρκεια μιας εκτέλεσης της συνεδρίας. Τα σύμβολα θέσης καθιστούν δυνατή την ενημέρωση του περιεχομένου ενός τανυστή από τη μία εκτέλεση περιόδου σύνδεσης στην επόμενη.
- Γραφήματα: Ένα γράφημα είναι ένα δοχείο παρόμοιο με μια λίστα ή μια πλειάδα. Μόνο ένα γράφημα μπορεί να είναι ενεργό κάθε φορά και όταν κωδικοποιείτε μια πράξη που δέχεται τανυστές ή μεταβλητές, οι τανυστές, οι μεταβλητές και η λειτουργία αποθηκεύονται ως στοιχεία στο γράφημα. Όταν δημιουργείτε ένα εργαλείο βελτιστοποίησης και καλείτε τη μέθοδο ελαχιστοποίησης του, το TensorFlow αποθηκεύει τη λειτουργία που προκύπτει στο γράφημα.
- Συνεδρίες . Τα γραφήματα αποθηκεύουν λειτουργίες, αλλά δεν μπορούν να εκτελέσουν λειτουργίες μόνοι τους. Αντίθετα, πρέπει να δημιουργήσετε μια περίοδο λειτουργίας και να καλέσετε τη μέθοδο εκτέλεσης της. Εάν καλέσετε τη λειτουργία με τανυστήρα ή πράξη, η μέθοδος θα εκτελέσει τις πράξεις στο γράφημα που απαιτούνται για να ληφθεί το επιθυμητό αποτέλεσμα.
- Βελτιστοποιητές . Ο στόχος της μηχανικής μάθησης είναι να τελειοποιήσει ένα μαθηματικό μοντέλο ενός πραγματικού συστήματος μέχρι να μοιάζει όσο το δυνατόν περισσότερο με το σύστημα. Αυτή η διαδικασία τελειοποίησης ονομάζεται βελτιστοποίηση και οι ερευνητές έχουν επινοήσει πολλές μεθόδους βελτιστοποίησης. Το TensorFlow υποστηρίζει πολλούς από αυτούς τους αλγόριθμους και παρέχει μια κατηγορία βελτιστοποίησης για τον καθένα. Ανεξάρτητα από την κατηγορία, μπορείτε να αποκτήσετε μια λειτουργία βελτιστοποίησης καλώντας τη μέθοδο ελαχιστοποίησης του βελτιστοποιητή.
- Μεταβλητές . Σε αντίθεση με τους τανυστές και τα σύμβολα θέσης, μια μεταβλητή είναι ένα παράδειγμα της κλάσης Variable. Ο πρωταρχικός σκοπός του είναι να περιέχει δεδομένα προς ενημέρωση κατά τη διαδικασία βελτιστοποίησης. Για παράδειγμα, εάν η εφαρμογή σας μοντελοποιεί ένα σύστημα με ευθεία γραμμή, θα αποθηκεύσετε την κλίση της γραμμής και την τομή y ως μεταβλητές. Αλλά για να μπορέσετε να χρησιμοποιήσετε μεταβλητές για τη βελτιστοποίηση ενός μοντέλου, πρέπει να δημιουργήσετε και να εκτελέσετε ειδικές λειτουργίες προετοιμασίας.
- Εκτιμητές . Εάν προτιμάτε να μην ασχολείστε με δομές δεδομένων χαμηλού επιπέδου, όπως περιόδους σύνδεσης και γραφήματα, μπορείτε να εκτελέσετε αλγόριθμους μηχανικής εκμάθησης χρησιμοποιώντας το API Εκτιμητή του TensorFlow. Ένας εκτιμητής είναι ένα παράδειγμα της κλάσης Εκτιμητής και κάθε εκτιμητής ενσωματώνει έναν αλγόριθμο μηχανικής μάθησης. Το κύριο πλεονέκτημα της χρήσης εκτιμητών είναι ότι όλοι έχουν τις ίδιες τρεις μεθόδους για την έναρξη της διαδικασίας μηχανικής μάθησης: εκπαίδευση, αξιολόγηση και πρόβλεψη.
Πώς να χρησιμοποιήσετε το TensorBoard στο TensorFlow
Όταν εγκαθιστάτε το TensorFlow, το πρόγραμμα εγκατάστασης παρέχει επίσης ένα βοηθητικό πρόγραμμα γραμμής εντολών που ονομάζεται TensorBoard. Αυτό δημιουργεί γραφικά που σας επιτρέπουν να οπτικοποιήσετε τη λειτουργία της εφαρμογής TensorFlow. Το TensorBoard διευκολύνει την εύρεση σφαλμάτων στα προγράμματά σας, αλλά δεν είναι εύκολο στη χρήση. Για να δημιουργήσετε δεδομένα και να προβάλετε τα διαγράμματα στο TensorFlow, πρέπει να εκτελέσετε έξι βήματα:
Δημιουργία συνοπτικών πράξεων.
Για να μπορέσετε να προβάλετε δεδομένα στο TensorBoard, πρέπει να προσδιορίσετε τα δεδομένα που θα εμφανίζονται δημιουργώντας ειδικές λειτουργίες που ονομάζονται συνοπτικές λειτουργίες. Μπορείτε να δημιουργήσετε αυτές τις λειτουργίες καλώντας συναρτήσεις του πακέτου tf.summary. Για παράδειγμα, μπορείτε να δημιουργήσετε μια λειτουργία σύνοψης για μια μεμονωμένη τιμή καλώντας το tf.summary.scalar. Μπορείτε να δημιουργήσετε μια λειτουργία σύνοψης για μια σειρά τιμών καλώντας το tf.summary.histogram. Μπορείτε να συνδυάσετε λειτουργίες μαζί καλώντας μια συνάρτηση όπως tf.summary.merge_all.
Εκτελέστε συνοπτικές πράξεις.
Αφού δημιουργήσετε μία ή περισσότερες συνοπτικές πράξεις, μπορείτε να λάβετε τα δεδομένα σύνοψης εκτελώντας τις πράξεις σε μια περίοδο λειτουργίας. Ως αποτέλεσμα, η περίοδος λειτουργίας θα επιστρέψει μια προσωρινή μνήμη πρωτοκόλλου που περιέχει τα δεδομένα σύνοψης της εφαρμογής.
Δημιουργήστε ένα FileWriter.
Για να μπορέσετε να εκτυπώσετε τα δεδομένα σύνοψης σε ένα αρχείο, πρέπει να δημιουργήσετε ένα FileWriter καλώντας το tf.summary.FileWriter. Αυτός ο κατασκευαστής δέχεται πολλά ορίσματα, αλλά το μόνο απαιτούμενο όρισμα είναι το όνομα του καταλόγου που περιέχει τα δεδομένα σύνοψης.
Εκτυπώστε τα συνοπτικά δεδομένα.
Η κλάση FileWriter δεν έχει απλή μέθοδο εκτύπωσης. Αντίθετα, πρέπει να καλέσετε τη μέθοδο add_summary του FileWriter για να εκτυπώσετε δεδομένα σύνοψης σε ένα αρχείο. Αυτή η μέθοδος εγγράφει το αρχείο συμβάντος στον κατάλογο που καθορίζεται στο πρόγραμμα κατασκευής FileWriter. Αφού εκτυπώσετε τα δεδομένα, είναι καλή ιδέα να καλέσετε τη μέθοδο κλεισίματος του FileWriter για να καταστρέψετε το στιγμιότυπο.
Εκκινήστε το TensorBoard.
Αφού εγκαταστήσετε το TensorFlow, το βοηθητικό πρόγραμμα tensorboard εμφανίζεται στον κατάλογο σεναρίων ανώτατου επιπέδου. Μπορείτε να εκκινήσετε το βοηθητικό πρόγραμμα εκτελώντας την εντολή tensorboard και ορίζοντας την επιλογή logdir στο όνομα του καταλόγου που περιέχει τα δεδομένα σύνοψης. Για παράδειγμα, εάν τα δεδομένα σύνοψης βρίσκονται στον κατάλογο εξόδου, μπορείτε να εκκινήσετε το TensorBoard εκτελώντας tensorboard –logdir=output σε μια γραμμή εντολών.
Δείτε το TensorBoard σε ένα πρόγραμμα περιήγησης.
Αφού εκκινήσετε το βοηθητικό πρόγραμμα TensorBoard, μπορείτε να δείτε τη διεπαφή του ανοίγοντας ένα πρόγραμμα περιήγησης. Η προεπιλεγμένη διεύθυνση URL είναι http://localhost:6006, αλλά μπορείτε να τη διαμορφώσετε ορίζοντας επιλογές κεντρικού υπολογιστή και θύρας στην εντολή tensorboard.
Πώς να εκτελέσετε το TensorFlow στο Cloud
Ο καλύτερος λόγος για να χρησιμοποιήσετε το TensorFlow για μηχανική εκμάθηση είναι ότι μπορείτε να εκτελέσετε τις εφαρμογές σας στο cloud. Πιο συγκεκριμένα, μπορείτε να αναπτύξετε προγράμματα TensorFlow στη Μηχανή Μηχανικής Εκμάθησης (ML), την οποία η Google καθιστά διαθέσιμη ως μέρος της πλατφόρμας Google Cloud (GCP). Αυτή η διαδικασία ανάπτυξης αποτελείται από επτά βήματα:
Δημιουργήστε ένα έργο Google Cloud Platform.
Όταν εργάζεστε με το GCP, ένα έργο χρησιμεύει ως το κεντρικό κοντέινερ των ρυθμίσεων διαμόρφωσης και των αρχείων προέλευσης. Μπορείτε να δημιουργήσετε ένα νέο έργο μεταβαίνοντας στην πλατφόρμα Google Cloud , κάνοντας κλικ στην επιλογή Επιλογή έργου και κάνοντας κλικ στο κουμπί συν στο πλαίσιο διαλόγου Επιλογή. Μπορείτε να επιλέξετε το όνομα του έργου σας, αλλά το GCP ορίζει το αναγνωριστικό του έργου, το οποίο είναι μοναδικό μεταξύ όλων των έργων GCP.
Ενεργοποιήστε την πρόσβαση στο ML Engine.
Κάθε νέο έργο GCP μπορεί να έχει πρόσβαση σε ορισμένες δυνατότητες της Google, συμπεριλαμβανομένου του Datastore και του Cloud Storage. Αλλά από προεπιλογή, τα έργα GCP δεν μπορούν να αναπτύξουν εφαρμογές στο ML Engine. Για να ενεργοποιήσετε την πρόσβαση, ανοίξτε το μενού στο επάνω αριστερό μέρος της σελίδας του έργου, επιλέξτε APIs & Services και, στη συνέχεια, κάντε κλικ στην επιλογή Βιβλιοθήκη. Κάντε κλικ στον σύνδεσμο με τίτλο Google Cloud Machine Learning Engine και, στη συνέχεια, κάντε κλικ στο κουμπί ΕΝΕΡΓΟΠΟΙΗΣΗ.
Εγκαταστήστε το κιτ ανάπτυξης λογισμικού Cloud (SDK).
Μπορείτε να αποκτήσετε πρόσβαση στο GCP από μια γραμμή εντολών εγκαθιστώντας το Google Cloud SDK . Για να το κατεβάσετε, κάντε κλικ στον κατάλληλο σύνδεσμο για το λειτουργικό σας σύστημα. Όταν ολοκληρωθεί η εγκατάσταση, θα μπορείτε να αποκτήσετε πρόσβαση στο SDK εκτελώντας εντολές gcloud σε μια γραμμή εντολών.
Μεταφορτώστε δεδομένα εκπαίδευσης/πρόβλεψης στο Cloud Storage.
Το ML Engine μπορεί να έχει πρόσβαση στα δεδομένα εκπαίδευσης/πρόβλεψής σας μόνο εάν τα ανεβάσετε στο Cloud Storage της Google. Μπορείτε να αλληλεπιδράσετε με το Cloud Storage από μια γραμμή εντολών μέσω του βοηθητικού προγράμματος gsutil που παρέχεται από το Cloud SDK. Τα δεδομένα του Cloud Storage περιέχονται σε δομές που μοιάζουν με κατάλογο που ονομάζονται buckets και όταν ανεβάζετε ένα αρχείο σε έναν κάδο, η δομή δεδομένων ονομάζεται αντικείμενο.
Προσθέστε μια ενότητα setup.py στο πακέτο της εφαρμογής σας.
Για να κάνετε μια εφαρμογή Python προσβάσιμη στο ML Engine, πρέπει να τη δομήσετε ως πακέτο. Κάθε πακέτο πρέπει να έχει μια λειτουργική μονάδα setup.py στον κατάλογο ανώτατου επιπέδου. Αυτή η λειτουργική μονάδα πρέπει να παρέχει κώδικα για το setuptools.setup, το οποίο παρέχει πληροφορίες διαμόρφωσης στο ML Engine.
Ξεκινήστε μια εργασία εκπαίδευσης για το ML Engine.
Για να εκπαιδεύσετε το μοντέλο σας στο cloud, πρέπει να ξεκινήσετε μια εργασία εκπαίδευσης εκτελώντας εργασίες gcloud ml-μηχανής υποβολής εκπαίδευσης με τις κατάλληλες επιλογές. Οι επιλογές περιλαμβάνουν --package-path, που προσδιορίζει τη θέση του πακέτου, --module-name, που παρέχει το όνομα της λειτουργικής μονάδας Python και –job-dir, που λέει στη Μηχανή ML πού να αποθηκεύσει την έξοδο. Όταν ολοκληρωθεί η εκπαίδευση, το ML Engine θα παράγει ένα SavedModel που θα περιέχει τα εκπαιδευμένα αποτελέσματα.
Εκκινήστε μια εργασία πρόβλεψης για το ML Engine.
Αφού αποκτήσετε ένα SavedModel, μπορείτε να χρησιμοποιήσετε το ML Engine για να εκτελέσετε πρόβλεψη εκτελώντας εργασίες υποβολής πρόβλεψης του κινητήρα ml του gcloud με τις κατάλληλες επιλογές. Οι επιλογές περιλαμβάνουν --input-paths, που προσδιορίζει τη θέση των αρχείων εισόδου του έργου, --data-format, που λέει στο ML Engine πώς μορφοποιούνται τα δεδομένα εισόδου και --output-path, που προσδιορίζει πού πρέπει να γίνει η έξοδος πρόβλεψης να αποθηκευτεί.