Τι είναι το TensorFlow; Πώς λειτουργεί Archiδομή & Χαρακτηριστικά
⚡ Έξυπνη Σύνοψη
Το TensorFlow είναι η πλατφόρμα ανοιχτού κώδικα Google Σχεδιασμένο για μηχανική μάθηση, που αναπαριστά κάθε υπολογισμό ως γράφημα ροής δεδομένων τανυστών. Αυτή η επισκόπηση καλύπτει την αρχιτεκτονική, τα στοιχεία, τον τρόπο εκτέλεσης ενός υπολογισμού και τον τρόπο τροφοδοσίας δεδομένων μέσω ενός αγωγού εισόδου.

Τι είναι το TensorFlow;
TensorFlow είναι μια πλατφόρμα ανοιχτού κώδικα από άκρο σε άκρο για τη δημιουργία εφαρμογών Machine Learning. Είναι μια συμβολική βιβλιοθήκη μαθηματικών που χρησιμοποιεί ροή δεδομένων και διαφοροποιήσιμο προγραμματισμό για την εκτέλεση διαφόρων εργασιών που εστιάζονται στην εκπαίδευση και την εξαγωγή συμπερασμάτων σε βαθιά νευρωνικά δίκτυα. Επιτρέπει στους προγραμματιστές να δημιουργούν εφαρμογές μηχανικής εκμάθησης χρησιμοποιώντας διάφορα εργαλεία, βιβλιοθήκες και πόρους της κοινότητας.
Αυτή τη στιγμή, η πιο διάσημη βιβλιοθήκη βαθιάς μάθησης στον κόσμο είναι GoogleΤο TensorFlow του. Google εφαρμόζει μηχανική μάθηση σε όλα τα προϊόντα της για να βελτιώσει την αναζήτηση, τη μετάφραση, τους υπότιτλους εικόνων και τις προτάσεις.
Παράδειγμα TensorFlow
Για να δώσω ένα συγκεκριμένο παράδειγμα, Google οι χρήστες μπορούν να βιώσουν μια ταχύτερη και πιο εκλεπτυσμένη εμπειρία αναζήτησης με την Τεχνητή Νοημοσύνη. Εάν ο χρήστης πληκτρολογήσει μια λέξη-κλειδί στη γραμμή αναζήτησης, Google παρέχει μια σύσταση σχετικά με το ποια θα μπορούσε να είναι η επόμενη λέξη.

Google θέλει να χρησιμοποιήσει τη μηχανική μάθηση για να επωφεληθεί από τα τεράστια σύνολα δεδομένων της και να προσφέρει στους χρήστες την καλύτερη δυνατή εμπειρία. Τρεις διαφορετικές ομάδες χρησιμοποιούν τη μηχανική μάθηση:
- Ερευνητές
- Επιστήμονες δεδομένων
- Προγραμματιστές
Μπορούν όλοι να χρησιμοποιήσουν το ίδιο σύνολο εργαλείων για να συνεργαστούν μεταξύ τους και να βελτιώσουν την αποτελεσματικότητά τους.
Google δεν περιέχει μόνο μεγάλα σύνολα δεδομένων, αλλά διαχειρίζεται επίσης τεράστια υπολογιστική υποδομή, επομένως το TensorFlow δημιουργήθηκε για κλιμάκωση από την αρχή. Το TensorFlow είναι μια βιβλιοθήκη που αναπτύχθηκε από το Google Η Brain Team θα επιταχύνει την έρευνα μηχανικής μάθησης και εις βάθος νευρωνικών δικτύων.
Κατασκευάστηκε για να τρέχει σε πολλαπλές CPU ή GPU, ακόμη και λειτουργικά συστήματα για κινητά, και έχει πολλά περιτυλίγματα σε πολλές γλώσσες όπως Python, C++ or Java.
Ιστορία του TensorFlow
Πριν από μερικά χρόνια, η βαθιά μάθηση άρχισε να ξεπερνά όλους τους άλλους αλγόριθμους μηχανικής μάθησης όταν παρείχε τεράστια ποσότητα δεδομένων. Google είδε ότι θα μπορούσε να χρησιμοποιήσει αυτά τα βαθιά νευρωνικά δίκτυα για να βελτιώσει τις υπηρεσίες του:
- Gmail
- φωτογραφία
- Google μηχανή αναζήτησης
Έφτιαξαν ένα πλαίσιο που ονομάζεται TensorFlow έτσι ώστε οι ερευνητές και οι προγραμματιστές να μπορούν να εργαστούν στο ίδιο μοντέλο και στη συνέχεια να το αναπτύξουν σε κλίμακα που θα μπορούσαν να χρησιμοποιήσουν πολλοί άνθρωποι.
Το TensorFlow κυκλοφόρησε δημόσια τον Νοέμβριο του 2015 και η έκδοση 1.0 ακολούθησε τον Φεβρουάριο του 2017. Η πολύ μεγαλύτερη αλλαγή ήρθε με TensorFlow 2.0 τον Σεπτέμβριο του 2019, το οποίο έκανε την εκτέλεση eager την προεπιλογή και υιοθέτησε το Keras ως το τυπικό API υψηλού επιπέδου. Από την έκδοση 2.16 και μετά, το Keras 3 είναι η προεπιλογή και ο ίδιος κώδικας μοντέλου μπορεί επίσης να εκτελεστεί σε JAX ή Py.Torbackends ch.
Το TensorFlow κυκλοφορεί με την άδεια Apache 2.0, επομένως μπορείτε να το χρησιμοποιήσετε, να το τροποποιήσετε και να το αναδιανείμετε, συμπεριλαμβανομένων των εμπορικών συναλλαγών, χωρίς να πληρώσετε. Google.
Πώς λειτουργεί το TensorFlow
Το TensorFlow σάς δίνει τη δυνατότητα να δημιουργήσετε γραφήματα ροής δεδομένων και δομές για να καθορίσετε τον τρόπο με τον οποίο τα δεδομένα κινούνται μέσα σε ένα γράφημα λαμβάνοντας εισόδους ως έναν πολυδιάστατο πίνακα που ονομάζεται Tensor. Σας επιτρέπει να δημιουργήσετε ένα διάγραμμα ροής λειτουργιών που μπορούν να εκτελεστούν σε αυτές τις εισόδους, το οποίο πηγαίνει στο ένα άκρο και έρχεται στο άλλο άκρο ως έξοδος.
TensorFlow Archiδομή
Η αρχιτεκτονική TensorFlow λειτουργεί σε τρία μέρη:
- Προεπεξεργασία των δεδομένων
- Δημιουργήστε το μοντέλο
- Εκπαιδεύστε και υπολογίστε το μοντέλο
Ονομάζεται TensorFlow επειδή δέχεται δεδομένα εισόδου ως πολυδιάστατο πίνακα, γνωστό και ως τεντωτήρες. Μπορείτε να κατασκευάσετε ένα είδος ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ των λειτουργιών (που ονομάζονται Γράφημα) που θέλετε να εκτελέσετε σε αυτήν την είσοδο. Η είσοδος μπαίνει στο ένα άκρο, και στη συνέχεια ρέει μέσω αυτού του συστήματος πολλαπλών λειτουργιών και βγαίνει από το άλλο άκρο ως έξοδο.
Πού μπορεί να εκτελεστεί το TensorFlow;
Οι απαιτήσεις υλικού και λογισμικού του TensorFlow εμπίπτουν σε δύο φάσεις:
Φάση ανάπτυξης: αυτό συμβαίνει όταν εκπαιδεύετε το μοντέλο, συνήθως σε επιτραπέζιο ή φορητό υπολογιστή.
Φάση εκτέλεσης ή συμπερασμάτωνΜόλις ολοκληρωθεί η εκπαίδευση, το μοντέλο μπορεί να εκτελεστεί σε πολλές πλατφόρμες:
- Τρέχουσα επιφάνεια εργασίας Windows, macOS ή Linux
- Το cloud ως υπηρεσία ιστού
- Κινητές συσκευές όπως το iOS και Android
Μπορείτε να το εκπαιδεύσετε σε πολλαπλές μηχανές, στη συνέχεια μπορείτε να το εκτελέσετε σε διαφορετικό μηχάνημα, αφού έχετε το εκπαιδευμένο μοντέλο.
Το μοντέλο μπορεί να εκπαιδευτεί και να χρησιμοποιηθεί τόσο σε GPU όσο και σε CPU. Οι GPU σχεδιάστηκαν αρχικά για βιντεοπαιχνίδια. Γύρω στο 2009, ερευνητές του Stanford έδειξαν ότι οι GPU είναι εξαιρετικά αποτελεσματικές στις πράξεις πινάκων και γραμμικής άλγεβρας από τις οποίες εξαρτώνται τα νευρωνικά δίκτυα. Η βαθιά μάθηση βασίζεται σε μεγάλο βαθμό στον πολλαπλασιασμό πινάκων. Το TensorFlow είναι πολύ γρήγορο στον υπολογισμό του πολλαπλασιασμού πινάκων επειδή είναι γραμμένο σε C++. Αν και εφαρμόζεται σε C++, Το TensorFlow μπορεί να προσπελαστεί και να ελέγχεται από άλλες γλώσσες κυρίως, Python.
Ένα ακόμη σημαντικό χαρακτηριστικό είναι TensorBoard, το οποίο απεικονίζει το γράφημα, τις μετρήσεις εκπαίδευσης και την κατανομή των βαρών κατά την εκτέλεση του μοντέλου.
Στοιχεία TensorFlow
τανύων μύς
Το όνομα του TensorFlow προέρχεται άμεσα από το βασικό του πλαίσιο: τανύων μύςΣτο TensorFlow, όλοι οι υπολογισμοί περιλαμβάνουν τανσόρους. Ένας τανσόρ είναι ένας διάνυσμα or μήτρα n-διαστάσεων που αντιπροσωπεύουν όλους τους τύπους δεδομένων. Όλες οι τιμές σε έναν τανυστή διατηρούν τον ίδιο τύπο δεδομένων με έναν γνωστό (ή μερικώς γνωστό) σχήμα. Το σχήμα των δεδομένων είναι η διάσταση του πίνακα ή του πίνακα.
Ένας τανυστής μπορεί να προέρχεται από τα δεδομένα εισόδου ή το αποτέλεσμα ενός υπολογισμού. Στο TensorFlow, όλες οι λειτουργίες εκτελούνται μέσα σε ένα γραφική παράσταση. Το γράφημα είναι ένα σύνολο υπολογισμών που πραγματοποιείται διαδοχικά. Κάθε πράξη ονομάζεται an κόμβος op και συνδέονται μεταξύ τους.
Το γράφημα περιγράφει τις λειτουργίες και τις συνδέσεις μεταξύ των κόμβων. Ωστόσο, δεν εμφανίζει τις τιμές. Η άκρη των κόμβων είναι ο τανυστής, δηλαδή ένας τρόπος να συμπληρωθεί η λειτουργία με δεδομένα.
Διαγράμματα
Το TensorFlow χρησιμοποιεί ένα πλαίσιο γραφήματος. Το γράφημα συγκεντρώνει και περιγράφει όλους τους σειριακούς υπολογισμούς που έγιναν κατά τη διάρκεια της εκπαίδευσης. Το γράφημα έχει πολλά πλεονεκτήματα:
- Εκτελείται σε πολλαπλές CPU ή GPU, ακόμη και σε λειτουργικά συστήματα για κινητά
- Η φορητότητα του γραφήματος επιτρέπει τη διατήρηση των υπολογισμών για άμεση ή μεταγενέστερη χρήση. Το γράφημα μπορεί να αποθηκευτεί για να εκτελεστεί στο μέλλον.
- Όλοι οι υπολογισμοί στο γράφημα γίνονται συνδέοντας τανυστές μεταξύ τους
- Ένα γράφημα έχει κόμβους και ακμές. Κάθε κόμβος εκτελεί μια μαθηματική πράξη και παράγει μια έξοδο, ενώ οι ακμές περιγράφουν τις σχέσεις εισόδου και εξόδου μεταξύ των κόμβων. Οι ίδιοι οι τανσόροι ταξιδεύουν κατά μήκος των ακμών.
Γιατί το TensorFlow είναι δημοφιλές;
Το TensorFlow έχει υιοθετηθεί ευρέως επειδή είναι προσβάσιμο σε κάθε επίπεδο εξειδίκευσης. Τα API του καλύπτουν τα πάντα, από ένα μοντέλο Keras τριών γραμμών έως ένα χειροποίητο CNN ή RNN. Επειδή ο υπολογισμός εκφράζεται ως γράφημα, το TensorBoard μπορεί να οπτικοποιήσει το δίκτυο και να κάνει την αποσφαλμάτωση πολύ πιο εύκολη. Επίσης, αναπτύσσεται σε μεγάλη κλίμακα, εκτελώντας σε CPU, GPU και TPU, και σε κινητά μέσω του TensorFlow Lite.
Το TensorFlow παραμένει ένα από τα δύο πιο χρησιμοποιούμενα frameworks βαθιάς μάθησης στο GitHub, μαζί με το Py.Torch.
TensorFlow Algorithms
Το TensorFlow συνοδεύεται από εκτιμητές υψηλού επιπέδου για διάφορους κλασικούς αλγόριθμους. Στο TensorFlow 1.x, αυτοί υπήρχαν στο tf.estimator:
- Γραμμική παλινδρόμηση: tf.estimator.LinearRegressor
- Ταξινόμηση: tf.estimator.LinearClassifier
- Ταξινόμηση βαθιάς μάθησης: tf.estimator.DNNClassifier
- Ευρεία και βαθιά μάθηση: tf.estimator.DNNLinearCombinedClassifier
- Ενισχυμένη παλινδρόμηση δέντρου: tf.estimator.BoostedTreesRegressor
- Ταξινόμηση ενισχυμένων δέντρων: tf.estimator.BoostedTreesClassifier
TensorFlow vs PyTorch: Ποιο πρέπει να επιλέξετε;
TensorFlow και PyTorΤα ch είναι τα δύο κυρίαρχα πλαίσια βαθιάς μάθησης και οι πρακτικές διαφορές έχουν μειωθεί σημαντικά από τότε που το TensorFlow 2.0 υιοθέτησε την eager execution.
| Κριτήρια | TensorFlow | PyTorch |
|---|---|---|
| Αναπτύχθηκε από | Google Εγκέφαλος | Meta AI |
| Εκτέλεση | Πρόθυμος, με προαιρετική σύνταξη γραφημάτων | Πρόθυμος, με προαιρετική μεταγλώττιση |
| API υψηλού επιπέδου | Κεράς, χτισμένο το | Ξεχωριστές βιβλιοθήκες όπως η Lightning |
| Κινητό και edge | Ώριμο, μέσω του TensorFlow Lite | Βελτίωση, μέσω της ΕκτέλεσηςTorch |
| Ανάπτυξη προγράμματος περιήγησης | TensorFlow.js | Απαιτείται μετατροπή σε ONNX |
| Τυπικό οχυρό | Παραγωγή και ανάπτυξη | Έρευνα και πειραματισμός |
Η ρεαλιστική απάντηση: επιλέξτε TensorFlow όταν το μοντέλο πρέπει να αποσταλεί σε κινητά, στο πρόγραμμα περιήγησης ή σε μια διαχειριζόμενη στοίβα εξυπηρέτησης και επιλέξτε PyTorch όταν κάνετε επανάληψη στην αρχιτεκτονική μοντέλου. Το Keras 3, το προεπιλεγμένο από την έκδοση 2.16 και μετά, μαλακώνει περαιτέρω την απόφαση, επειδή ο ίδιος κώδικας Keras μπορεί να εκτελεστεί σε TensorFlow, JAX ή Py.Torbackend ch.
Πώς λειτουργούν οι υπολογισμοί στο TensorFlow
⚠️ Σημείωση έκδοσης: οι παρακάτω οδηγίες χρησιμοποιούν το TensorFlow 1.χ στυλ γραφήματος-και-περιόδου σύνδεσης, το οποίο είναι ο πιο σαφής τρόπος για να δείτε πώς λειτουργεί στην πραγματικότητα το γράφημα ροής δεδομένων. Οι συναρτήσεις tf.placeholder(), tf.Session() και make_initializable_iterator() αφαιρέθηκαν στο TensorFlow 2.0 και θα εμφανίσει το AttributeError σε μια τρέχουσα εγκατάσταση. Η ενότητα TensorFlow 1.x έναντι TensorFlow 2.x πιο κάτω δίνει το σύγχρονο αντίστοιχο κάθε παραδείγματος.
import numpy as np import tensorflow as tf
Στις δύο πρώτες γραμμές κώδικα, έχουμε εισαγάγει tensorflow ως tf. Με Python, είναι κοινή πρακτική η χρήση σύντομου ονόματος για μια βιβλιοθήκη. Το πλεονέκτημα είναι να αποφύγουμε να πληκτρολογήσουμε το πλήρες όνομα της βιβλιοθήκης όταν πρέπει να το χρησιμοποιήσουμε. Για παράδειγμα, μπορούμε να εισαγάγουμε tensorflow ως tf και να καλέσουμε tf όταν θέλουμε να χρησιμοποιήσουμε μια συνάρτηση tensorflow
Ας εξασκηθούμε στη βασική ροή εργασίας του TensorFlow με απλά παραδείγματα TensorFlow. Ας δημιουργήσουμε ένα υπολογιστικό γράφημα που πολλαπλασιάζει δύο αριθμούς μεταξύ τους.
Κατά τη διάρκεια του παραδείγματος, θα πολλαπλασιάσουμε τα X_1 και X_2 μεταξύ τους. Το TensorFlow θα δημιουργήσει έναν κόμβο για να συνδέσει τη λειτουργία. Στο παράδειγμά μας, ονομάζεται πολλαπλασιασμός. Όταν προσδιοριστεί το γράφημα, οι υπολογιστικές μηχανές TensorFlow θα πολλαπλασιάσουν τα X_1 και X_2 μεταξύ τους.
Τέλος, θα εκτελέσουμε μια συνεδρία TensorFlow που θα εκτελέσει το υπολογιστικό γράφημα με τις τιμές των X_1 και X_2 και θα εκτυπώσει το αποτέλεσμα του πολλαπλασιασμού.
Ας ορίσουμε τους κόμβους εισόδου X_1 και X_2. Όταν δημιουργούμε έναν κόμβο στο TensorFlow, πρέπει να επιλέξουμε το είδος του κόμβου που θα δημιουργήσουμε. Οι κόμβοι X1 και X2 θα είναι ένας κόμβος placeholder. Ο placeholder αντιστοιχίζει μια νέα τιμή κάθε φορά που κάνουμε έναν υπολογισμό. Θα τους δημιουργήσουμε ως κόμβο placeholder κουκκίδας TF.
Βήμα 1: Ορίστε τη μεταβλητή
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
Ένα σύμβολο κράτησης θέσης χρειάζεται έναν τύπο δεδομένων. Αυτοί είναι αριθμοί, επομένως το tf.float32 είναι η σωστή επιλογή. Το όρισμα name είναι προαιρετικό αλλά χρήσιμο, επειδή είναι η ετικέτα που εμφανίζεται στην απεικόνιση TensorBoard του γραφήματος. Το X_2 ορίζεται με τον ίδιο τρόπο.
Βήμα 2: Ορίστε τον υπολογισμό
multiply = tf.multiply(X_1, X_2, name = "multiply")
Τώρα μπορούμε να ορίσουμε τον κόμβο που εκτελεί την πράξη πολλαπλασιασμού. Στο TensorFlow μπορούμε να το κάνουμε αυτό δημιουργώντας έναν κόμβο tf.multiply.
Θα περάσουμε στους κόμβους X_1 και X_2 στον κόμβο πολλαπλασιασμού. Λέει στο tensorflow να συνδέσει αυτούς τους κόμβους στο υπολογιστικό γράφημα, οπότε του ζητάμε να τραβήξει τις τιμές από τα x και y και να πολλαπλασιάσει το αποτέλεσμα. Ας δώσουμε επίσης στον κόμβο πολλαπλασιασμού το όνομα πολλαπλασιασμός. Είναι ολόκληρος ο ορισμός για το απλό υπολογιστικό μας γράφημα.
Βήμα 3: Εκτελέστε τη λειτουργία
Για να εκτελέσουμε λειτουργίες στο γράφημα, πρέπει να δημιουργήσουμε μια συνεδρία (session). Στο TensorFlow, αυτό γίνεται με την tf.Session(). Τώρα που έχουμε μια συνεδρία, μπορούμε να ζητήσουμε από την συνεδρία να εκτελέσει λειτουργίες στο υπολογιστικό μας γράφημα καλώντας την session. Για να εκτελέσουμε τον υπολογισμό, πρέπει να χρησιμοποιήσουμε την run.
Όταν εκτελείται η λειτουργία πολλαπλασιασμού, χρειάζεται τις τιμές των κόμβων X_1 και X_2, επομένως τις τροφοδοτείτε κατά τον χρόνο εκτέλεσης. Μπορούμε να το κάνουμε αυτό παρέχοντας μια παράμετρο που ονομάζεται feed_dict. Περνάμε την τιμή 1,2,3 για το X_1 και 4,5,6 για το X_2.
Εκτυπώνουμε τα αποτελέσματα με print(result). Θα πρέπει να δούμε 4, 10 και 18 για 1×4, 2×5 και 3×6
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2") multiply = tf.multiply(X_1, X_2, name = "multiply") with tf.Session() as session: result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]}) print(result)
[ 4. 10. 18.]
Επιλογές για τη φόρτωση δεδομένων στο TensorFlow
Το πρώτο βήμα πριν την προπόνηση α αλγόριθμος μηχανικής μάθησης είναι η φόρτωση των δεδομένων. Υπάρχουν δύο συνηθισμένοι τρόποι φόρτωσης δεδομένων:
1. Φόρτωση δεδομένων στη μνήμηΕίναι η απλούστερη μέθοδος. Φορτώνετε όλα τα δεδομένα σας στη μνήμη ως έναν μόνο πίνακα. Γράφετε απλά Python για αυτό· τίποτα από αυτά δεν είναι ειδικό για το TensorFlow.
2. Αγωγός δεδομένων TensorFlowΤο TensorFlow παρέχει ένα ενσωματωμένο API που φορτώνει τα δεδομένα, εφαρμόζει μετασχηματισμούς και τροφοδοτεί το μοντέλο. Αυτή η μέθοδος λειτουργεί πολύ καλά, ειδικά όταν έχετε ένα μεγάλο σύνολο δεδομένων. Για παράδειγμα, τα αρχεία εικόνων είναι γνωστό ότι είναι τεράστια και δεν χωράνε στη μνήμη. Ο αγωγός δεδομένων διαχειρίζεται τη μνήμη από μόνος του.
Τι λύση να χρησιμοποιήσω;
Φόρτωση δεδομένων στη μνήμη
Εάν το σύνολο δεδομένων σας δεν είναι πολύ μεγάλο, δηλαδή λιγότερο από 10 gigabyte, μπορείτε να χρησιμοποιήσετε την πρώτη μέθοδο. Τα δεδομένα μπορούν να χωρέσουν στη μνήμη. Μπορείτε να χρησιμοποιήσετε μια διάσημη βιβλιοθήκη που ονομάζεται Pandas για να εισάγετε αρχεία CSV. Θα μάθετε περισσότερα για τα πάντα στο επόμενο σεμινάριο.
Φόρτωση δεδομένων με αγωγό TensorFlow
Η δεύτερη μέθοδος λειτουργεί καλύτερα εάν έχετε μεγάλο σύνολο δεδομένων. Για παράδειγμα, εάν έχετε ένα σύνολο δεδομένων 50 gigabyte και ο υπολογιστής σας έχει μόνο 16 gigabyte μνήμης, τότε το μηχάνημα θα διακοπεί.
Σε αυτήν την περίπτωση, πρέπει να δημιουργήσετε έναν αγωγό TensorFlow. Ο αγωγός θα φορτώνει τα δεδομένα σε παρτίδες ή σε μικρά κομμάτια. Κάθε παρτίδα θα προωθείται στον αγωγό και θα είναι έτοιμη για την εκπαίδευση. Η δημιουργία ενός αγωγού είναι μια εξαιρετική λύση επειδή σας επιτρέπει να χρησιμοποιείτε παράλληλη υπολογιστική. Αυτό σημαίνει ότι το TensorFlow θα εκπαιδεύσει το μοντέλο σε πολλαπλές CPU. Αυτό επιταχύνει τον υπολογισμό και καθιστά πρακτική την εκπαίδευση μεγαλύτερων δικτύων.
Με λίγα λόγια: φορτώστε μικρά σύνολα δεδομένων στη μνήμη με pandas και χρησιμοποιήστε έναν αγωγό TensorFlow όταν τα δεδομένα είναι μεγάλα ή όταν θέλετε παράλληλη φόρτωση σε πολλαπλές CPU.
Πώς να δημιουργήσετε τον αγωγό TensorFlow
Ακολουθούν τα βήματα για τη δημιουργία ενός αγωγού TensorFlow:
Στο προηγούμενο παράδειγμα, προσθέσαμε χειροκίνητα τρεις τιμές για τα X_1 και X_2. Τώρα, θα δούμε πώς να φορτώσουμε δεδομένα στο TensorFlow:
Βήμα 1) Δημιουργήστε τα δεδομένα
Πρώτα απ 'όλα, ας χρησιμοποιήσουμε τη βιβλιοθήκη numpy για να δημιουργήσουμε δύο τυχαίες τιμές.
import numpy as np
x_input = np.random.sample((1,2))
print(x_input)
[[0.8835775 0.23766977]]
Βήμα 2) Δημιουργήστε το σύμβολο κράτησης θέσης
Όπως και στο προηγούμενο παράδειγμα, δημιουργούμε ένα σύμβολο κράτησης θέσης με το όνομα X. Πρέπει να καθορίσουμε ρητά το σχήμα του τανυστή. Σε περίπτωση που, θα φορτώσουμε έναν πίνακα με δύο μόνο τιμές. Μπορούμε να γράψουμε το σχήμα ως σχήμα=[1,2]
# using a placeholder x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Βήμα 3) Καθορίστε τη μέθοδο δεδομένων
Στη συνέχεια, πρέπει να ορίσουμε το σύνολο δεδομένων όπου μπορούμε να συμπληρώσουμε την τιμή του σύμβολο κράτησης θέσης x. Πρέπει να χρησιμοποιήσουμε τη μέθοδο tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Βήμα 4) Δημιουργήστε τον αγωγό
Στο τέταρτο βήμα, πρέπει να αρχικοποιήσουμε τη γραμμή όπου θα ρέουν τα δεδομένα. Πρέπει να δημιουργήσουμε έναν επαναλήπτη με το make_initializable_iterator. Το ονομάζουμε επαναληπτικό. Στη συνέχεια, πρέπει να καλέσουμε αυτόν τον επαναλήπτη για να τροφοδοτήσει την επόμενη παρτίδα δεδομένων, get_next. Ονομάζουμε αυτό το βήμα get_next. Σημειώστε ότι στο παράδειγμά μας, υπάρχει μόνο μία παρτίδα δεδομένων με δύο μόνο τιμές.
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
Βήμα 5) Εκτελέστε τη λειτουργία
Το τελευταίο βήμα είναι παρόμοιο με το προηγούμενο παράδειγμα. Ξεκινάμε μια περίοδο λειτουργίας και εκτελούμε τον επαναλήπτη λειτουργίας. Τροφοδοτούμε το feed_dict με την τιμή που δημιουργείται από πολλοί. Αυτές οι δύο τιμές θα συμπληρώσουν το σύμβολο κράτησης θέσης x. Στη συνέχεια εκτελούμε το get_next για να εκτυπώσουμε το αποτέλεσμα.
with tf.Session() as sess:
# feed the placeholder with data
sess.run(iterator.initializer, feed_dict={ x: x_input })
print(sess.run(get_next))
[0.8835775 0.23766978]
TensorFlow 1.x vs TensorFlow 2.x: Τι άλλαξε
Το TensorFlow 2.0 ήταν μια πρωτοποριακή αναδιατύπωση του API που απευθύνεται στον χρήστη. Η κατανόηση της διαφοράς έχει σημασία, επειδή ένας μεγάλος όγκος κώδικα εκπαιδευτικών προγραμμάτων στο διαδίκτυο, συμπεριλαμβανομένων των παραπάνω παραδειγμάτων, στοχεύει στο στυλ 1.x.
| Έννοια | TensorFlow 1.χ | TensorFlow 2.χ |
|---|---|---|
| Μοντέλο εκτέλεσης | Ορίστε το γράφημα και, στη συνέχεια, εκτελέστε το | Από προεπιλογή, το Eager, οι λειτουργίες εκτελούνται αμέσως. |
| Δεδομένα τροφοδοσίας | tf.placeholder συν feed_dict | Πέρασμα Python τιμές ή τανσόρους απευθείας |
| Εκτελούμενες λειτουργίες | tf.Session().run() | Κλήση της συνάρτησης, δεν απαιτείται συνεδρία |
| API υψηλού επιπέδου | tf.estimator | Κέρας, τφ. κεράς |
| Βελτιστοποίηση γραφημάτων | Πάντα βασισμένο σε γραφήματα | Δηλώστε συμμετοχή με τον διακοσμητή @tf.function |
| Επανάληψη ενός συνόλου δεδομένων | make_initializable_iterator() | Σκέτη Python βρόχος for πάνω από το σύνολο δεδομένων |
Το παράδειγμα πολλαπλασιασμού, ξαναγραμμένο. Τρία βήματα και μια συνεδρία γίνονται μία γραμμή, επειδή η λειτουργία εκτελείται τη στιγμή που καλείται:
import tensorflow as tf X_1 = tf.constant([1, 2, 3], dtype=tf.float32) X_2 = tf.constant([4, 5, 6], dtype=tf.float32) result = tf.multiply(X_1, X_2, name="multiply") print(result.numpy()) # [ 4. 10. 18.]
Η αγωγός εισόδου, ξαναγραμμένη. Δεν απαιτείται σύμβολο κράτησης θέσης και αντικείμενο επαναλήπτη:
import numpy as np import tensorflow as tf x_input = np.random.sample((1, 2)) dataset = tf.data.Dataset.from_tensor_slices(x_input) for batch in dataset: print(batch.numpy())
Αν χρειάζεστε την ταχύτητα ενός μεταγλωττισμένου γραφήματος, τυλίξτε τη συνάρτηση σε @tf.function και TensorFlow. tracτο μετατρέπει αυτόματα σε ένα. Τα παλαιότερα σενάρια 1.x μπορούν επίσης να εκτελεστούν αμετάβλητα μέσω του χώρου ονομάτων tf.compat.v1, αν και αυτή η διαδρομή είναι μόνο για συντήρηση και δεν πρέπει να χρησιμοποιείται για νέα εργασία.
TensorFlow: Βασικά Συμπεράσματα και Code Αναφορά
- Σημασία TensorFlow: TensorFlow είναι η πιο διάσημη βιβλιοθήκη βαθιάς μάθησης τα τελευταία χρόνια. Ένας επαγγελματίας που χρησιμοποιεί το TensorFlow μπορεί να δημιουργήσει οποιαδήποτε δομή βαθιάς μάθησης, όπως CNN, RNN ή απλό τεχνητό νευρωνικό δίκτυο.
- Το TensorFlow χρησιμοποιείται κυρίως από ακαδημαϊκούς, νεοσύστατες επιχειρήσεις και μεγάλες εταιρείες. Google χρησιμοποιεί το TensorFlow σχεδόν σε όλα Google προϊόντα καθημερινής χρήσης, συμπεριλαμβανομένων Gmail, Φωτογραφία και Google Μηχανή αναζήτησης.
- The Google Η ομάδα Brain ανέπτυξε το TensorFlow για να γεφυρώσει το χάσμα μεταξύ ερευνητών και προγραμματιστών προϊόντων. Το 2015, έκαναν το TensorFlow διαθέσιμο στο κοινό. Η δημοτικότητά του αυξάνεται ραγδαία. Σήμερα, το TensorFlow είναι η βιβλιοθήκη βαθιάς μάθησης με τα περισσότερα αποθετήρια στο GitHub.
- Οι επαγγελματίες χρησιμοποιούν το TensorFlow επειδή αναπτύσσεται εύκολα σε μεγάλη κλίμακα, στο cloud, στο πρόγραμμα περιήγησης ή σε κινητές συσκευές με iOS και... Android.
Το TensorFlow λειτουργεί σε μια συνεδρία. Κάθε συνεδρία ορίζεται από ένα γράφημα με διαφορετικούς υπολογισμούς. Ένα απλό παράδειγμα μπορεί να είναι ο πολλαπλασιασμός σε αριθμό. Στο TensorFlow, απαιτούνται τρία βήματα:
- Ορίστε τη μεταβλητή
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
- Ορίστε τον υπολογισμό
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Εκτελέστε τη λειτουργία
with tf.Session() as session:
result = session.run(multiply, feed_dict={X_1: [1, 2, 3], X_2: [4, 5, 6]})
print(result)
Μια συνήθης πρακτική στο TensorFlow είναι η δημιουργία ενός αγωγού για τη φόρτωση των δεδομένων. Αν ακολουθήσετε αυτά τα πέντε βήματα, θα μπορείτε να φορτώσετε δεδομένα στο TensorFLow:
- Δημιουργήστε τα δεδομένα
import numpy as np
x_input = np.random.sample((1,2))
print(x_input)
- Δημιουργήστε το σύμβολο κράτησης θέσης
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Καθορίστε τη μέθοδο δεδομένων
dataset = tf.data.Dataset.from_tensor_slices(x)
- Δημιουργήστε τον αγωγό
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Εκτελέστε το πρόγραμμα
with tf.Session() as sess:
sess.run(iterator.initializer, feed_dict={x: x_input})
print(sess.run(get_next))
