Εκμάθηση TensorBoard: Οπτικοποίηση Γραφήματος TensorFlow
⚡ Έξυπνη Σύνοψη
Το TensorBoard είναι το οπτικό front end για τις εκτελούμενες εκπαιδεύσεις του TensorFlow, σχεδιάζοντας καμπύλες απωλειών, γραφήματα μοντέλων, ιστογράμματα βαρών και ενσωματώσεις. Αυτή η αναλυτική παρουσίαση γράφει αρχεία συμβάντων με έναν εκτιμητή και, στη συνέχεια, ανοίγει τον πίνακα ελέγχου στη θύρα 6006.
Τι είναι το TensorBoard;
Το TensorBoard είναι η διεπαφή που χρησιμοποιείται για την οπτικοποίηση του γραφήματος και άλλων εργαλείων για την κατανόηση, τον εντοπισμό σφαλμάτων και τη βελτιστοποίηση του μοντέλου. Είναι ένα εργαλείο που παρέχει μετρήσεις και οπτικοποιήσεις για μια ροή εργασίας μηχανικής μάθησης. Βοηθά track μετρήσεις όπως η απώλεια και η ακρίβεια, οπτικοποιούν το γράφημα του μοντέλου και προβάλλουν ενσωματώσεις σε χώρους χαμηλότερων διαστάσεων.
Το TensorBoard διατίθεται με TensorFlow και εκτελείται ως ένας μικρός τοπικός διακομιστής ιστού που διαβάζει τα αρχεία συμβάντων που μια εκπαιδευτική εργασία γράφει στο δίσκο.
Οπτικοποίηση Γραφήματος TensorFlow χρησιμοποιώντας Παράδειγμα TensorBoard
Η παρακάτω εικόνα προέρχεται από το γράφημα TensorBoard που θα δημιουργήσετε σε αυτό το σεμινάριο. Είναι ο κύριος πίνακας:
Από την παρακάτω εικόνα, μπορείτε να δείτε το πλαίσιο της οπτικοποίησης γραφήματος TensorBoard. Ο πίνακας περιέχει διαφορετικές καρτέλες, οι οποίες συνδέονται με το επίπεδο πληροφοριών που προσθέτετε όταν εκτελείτε το μοντέλο.
- Βαθμωτά: Εμφάνιση διαφορετικών χρήσιμων πληροφοριών κατά τη διάρκεια της εκπαίδευσης μοντέλου
- Γραφικές παραστάσεις: Δείξτε το μοντέλο
- Ιστόγραμμα: Εμφάνιση βαρών με ιστόγραμμα
- Διανομή: Εμφάνιση της κατανομής του βάρους
- Προβολέας: Εμφάνιση της ανάλυσης κύριων συνιστωσών και του αλγορίθμου T-SNE. Η τεχνική που χρησιμοποιείται για τη μείωση της διαστασιολόγησης.
Κατά τη διάρκεια αυτού του σεμιναρίου TensorBoard, θα εκπαιδεύσετε ένα απλό βαθιά μάθηση μοντέλο και το γράφημα που παράγει διαβάζεται από κάτω προς τα πάνω.
Αν κοιτάξετε το γράφημα, μπορείτε να καταλάβετε πώς λειτουργεί το μοντέλο. Τα αριθμημένα σήματα στο παρακάτω στιγμιότυπο οθόνης σηματοδοτούν αυτά τα τέσσερα στάδια:
- Τοποθετήστε τα δεδομένα στο μοντέλο: Ωθήστε στο μοντέλο ποσότητα δεδομένων ίση με το μέγεθος παρτίδας, π.χ. Αριθμός τροφοδοσίας δεδομένων μετά από κάθε επανάληψη
- Τροφοδοτήστε τα δεδομένα στους τανυστές
- Εκπαιδεύστε το μοντέλο
- Εμφανίστε τον αριθμό των παρτίδων κατά τη διάρκεια της εκπαίδευσης. Αποθηκεύστε το μοντέλο στο δίσκο.
Η βασική ιδέα πίσω από το TensorBoard είναι ότι ένα νευρωνικό δίκτυο μπορεί να συμπεριφέρεται σαν ένα μαύρο κουτί και χρειάζεστε ένα εργαλείο για να ελέγξετε τι υπάρχει μέσα σε αυτό το κουτί. Σκεφτείτε το TensorBoard ως έναν φακό για να εξερευνήσετε το δίκτυο.
Βοηθά στην κατανόηση των εξαρτήσεων μεταξύ των λειτουργιών, του τρόπου υπολογισμού των βαρών, εμφανίζει τη συνάρτηση απώλειας και πολλές άλλες χρήσιμες πληροφορίες. Όταν συγκεντρώνετε όλες αυτές τις πληροφορίες μαζί, έχετε ένα εξαιρετικό εργαλείο για να εντοπίσετε σφάλματα και να βρείτε πώς να βελτιώσετε το μοντέλο.
Για να σας δώσουμε μια ιδέα για το πόσο χρήσιμο μπορεί να είναι το γράφημα TensorBoard, δείτε τις δύο καμπύλες απωλειών παρακάτω:
Ένα νευρωνικό δίκτυο αποφασίζει πώς να συνδέσει τους διαφορετικούς νευρώνες και πόσα επίπεδα χρειάζονται πριν το μοντέλο μπορέσει να προβλέψει ένα αποτέλεσμα. Μόλις οριστεί η αρχιτεκτονική, δεν χρειάζεται μόνο να εκπαιδεύσετε το μοντέλο αλλά και μια μέτρηση που μετρά την ακρίβεια της πρόβλεψης. Αυτή η μέτρηση ονομάζεται συνάρτηση απώλειας και ο στόχος είναι η ελαχιστοποίησή της, που σημαίνει απλώς ότι το μοντέλο κάνει λιγότερα σφάλματα.
Κάθε αλγόριθμος εκπαίδευσης επαναλαμβάνει τον υπολογισμό πολλές φορές μέχρι η απώλεια να φτάσει σε μια πιο επίπεδη γραμμή. Η ελαχιστοποίηση της απώλειας απαιτεί επίσης έναν ρυθμό εκμάθησης, ο οποίος είναι η ταχύτητα με την οποία μαθαίνει το μοντέλο. Αν ορίσετε τον ρυθμό εκμάθησης πολύ υψηλό, το μοντέλο δεν θα έχει ποτέ χρόνο να μάθει τίποτα: αυτό είναι το αριστερό διάγραμμα, όπου η γραμμή κινείται πάνω-κάτω επειδή το μοντέλο ουσιαστικά μαντεύει. Το διάγραμμα στα δεξιά δείχνει την απώλεια να μειώνεται κατά τη διάρκεια των επαναλήψεων μέχρι η καμπύλη να ισοπεδωθεί, πράγμα που σημαίνει ότι το μοντέλο έχει βρει μια λύση.
Το TensorBoard είναι ένα εξαιρετικό εργαλείο για την οπτικοποίηση τέτοιων μετρήσεων και την επισήμανση πιθανών προβλημάτων. Ένα νευρωνικό δίκτυο μπορεί να χρειαστεί ώρες ή εβδομάδες μέχρι να βρει μια λύση και το TensorBoard ανανεώνει τις μετρήσεις ενώ η εργασία εξακολουθεί να εκτελείται. Επομένως, δεν χρειάζεται να περιμένετε μέχρι το τέλος για να δείτε αν το μοντέλο εκπαιδεύεται σωστά: ανοίξτε το TensorBoard, ελέγξτε πώς πηγαίνει η εκπαίδευση και κάντε την κατάλληλη αλλαγή, εάν είναι απαραίτητο.
Πώς να χρησιμοποιήσετε το TensorBoard;
Σε αυτήν την ενότητα, θα μάθετε πώς να ανοίγετε το TensorBoard από το τερματικό στο macOS και από τη γραμμή εντολών WindowsΗ έμφαση εδώ δίνεται στο εργαλείο και όχι στο μοντέλο, επομένως ο κώδικας εκπαίδευσης είναι σκόπιμα σύντομος.
Αρχικά, πρέπει να εισαγάγετε τις βιβλιοθήκες που θα χρησιμοποιήσετε κατά τη διάρκεια της εκπαίδευσης.
## Import the library import tensorflow as tf import numpy as np
Δημιουργείτε τα δεδομένα. Είναι ένας πίνακας 10000 γραμμών και 5 στηλών.
X_train = (np.random.sample((10000,5))) y_train = (np.random.sample((10000,1))) X_train.shape
Παραγωγή
(10000, 5)
Ο παρακάτω κώδικας μετασχηματίζει τα δεδομένα και δημιουργεί το μοντέλο.
Σημειώστε ότι ο ρυθμός εκμάθησης είναι ίσος με 0.1. Εάν αλλάξετε αυτόν τον ρυθμό σε υψηλότερη τιμή, το μοντέλο δεν θα βρει λύση. Αυτό συνέβη στην αριστερή πλευρά της παραπάνω εικόνας.
Το παράδειγμα χρησιμοποιεί έναν εκτιμητή TensorFlow, το API υψηλού επιπέδου που αναδιπλώνει τους μαθηματικούς υπολογισμούς. Οι εκτιμητές ανήκουν στο API TensorFlow 1.x, επομένως τα δύο παρακάτω τμήματα εκτελούνται υπό εγκατάσταση 1.x ή μέσω του tf.compat.v1 χώρος ονομάτων
Για να δημιουργήσετε τα αρχεία καταγραφής, πρέπει να καθορίσετε τη διαδρομή. Αυτό γίνεται με το όρισμα model_dir.
Στο παράδειγμα TensorBoard παρακάτω, αποθηκεύετε το μοντέλο μέσα στον κατάλογο εργασίας, δηλαδή, εκεί που αποθηκεύετε το σημειωματάριο ή Python αρχείο. Μέσα σε αυτήν τη διαδρομή, το TensorFlow θα δημιουργήσει έναν φάκελο που ονομάζεται train με έναν θυγατρικό φάκελο που ονομάζεται linreg.
feature_columns = [
tf.feature_column.numeric_column('x', shape=X_train.shape[1:])]
DNN_reg = tf.estimator.DNNRegressor(feature_columns=feature_columns,
# Indicate where to store the log file
model_dir='train/linreg',
hidden_units=[500, 300],
optimizer=tf.train.ProximalAdagradOptimizer(
learning_rate=0.1,
l1_regularization_strength=0.001
)
)
Παραγωγή
INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {'_model_dir': 'train/linreg', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x1818e63828>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}
Το τελευταίο βήμα αυτού του παραδείγματος οπτικοποίησης γραφήματος TensorFlow συνίσταται στην εκπαίδευση του μοντέλου. Κατά τη διάρκεια της εκπαίδευσης, το TensorFlow γράφει πληροφορίες στον κατάλογο μοντέλου.
# Train the estimator train_input = tf.estimator.inputs.numpy_input_fn( x={"x": X_train}, y=y_train, shuffle=False,num_epochs=None) DNN_reg.train(train_input,steps=3000)
Παραγωγή
INFO:tensorflow:Calling model_fn. INFO:tensorflow:Done calling model_fn. INFO:tensorflow:Create CheckpointSaverHook. INFO:tensorflow:Graph was finalized. INFO:tensorflow:Running local_init_op. INFO:tensorflow:Done running local_init_op. INFO:tensorflow:Saving checkpoints for 1 into train/linreg/model.ckpt. INFO:tensorflow:loss = 40.060104, step = 1 INFO:tensorflow:global_step/sec: 197.061 INFO:tensorflow:loss = 10.62989, step = 101 (0.508 sec) INFO:tensorflow:global_step/sec: 172.487 INFO:tensorflow:loss = 11.255318, step = 201 (0.584 sec) INFO:tensorflow:global_step/sec: 193.295 INFO:tensorflow:loss = 10.604872, step = 301 (0.513 sec) INFO:tensorflow:global_step/sec: 175.378 INFO:tensorflow:loss = 10.090343, step = 401 (0.572 sec) INFO:tensorflow:global_step/sec: 209.737 INFO:tensorflow:loss = 10.057928, step = 501 (0.476 sec) INFO:tensorflow:global_step/sec: 171.646 INFO:tensorflow:loss = 10.460144, step = 601 (0.583 sec) INFO:tensorflow:global_step/sec: 192.269 INFO:tensorflow:loss = 10.529617, step = 701 (0.519 sec) INFO:tensorflow:global_step/sec: 198.264 INFO:tensorflow:loss = 9.100082, step = 801 (0.504 sec) INFO:tensorflow:global_step/sec: 226.842 INFO:tensorflow:loss = 10.485607, step = 901 (0.441 sec) INFO:tensorflow:global_step/sec: 152.929 INFO:tensorflow:loss = 10.052481, step = 1001 (0.655 sec) INFO:tensorflow:global_step/sec: 166.745 INFO:tensorflow:loss = 11.320213, step = 1101 (0.600 sec) INFO:tensorflow:global_step/sec: 161.854 INFO:tensorflow:loss = 9.603306, step = 1201 (0.619 sec) INFO:tensorflow:global_step/sec: 179.074 INFO:tensorflow:loss = 11.110269, step = 1301 (0.556 sec) INFO:tensorflow:global_step/sec: 202.776 INFO:tensorflow:loss = 11.929443, step = 1401 (0.494 sec) INFO:tensorflow:global_step/sec: 144.161 INFO:tensorflow:loss = 11.951693, step = 1501 (0.694 sec) INFO:tensorflow:global_step/sec: 154.144 INFO:tensorflow:loss = 8.620987, step = 1601 (0.649 sec) INFO:tensorflow:global_step/sec: 151.094 INFO:tensorflow:loss = 10.666125, step = 1701 (0.663 sec) INFO:tensorflow:global_step/sec: 193.644 INFO:tensorflow:loss = 11.0349865, step = 1801 (0.516 sec) INFO:tensorflow:global_step/sec: 189.707 INFO:tensorflow:loss = 9.860596, step = 1901 (0.526 sec) INFO:tensorflow:global_step/sec: 176.423 INFO:tensorflow:loss = 10.695, step = 2001 (0.567 sec) INFO:tensorflow:global_step/sec: 213.066 INFO:tensorflow:loss = 10.426752, step = 2101 (0.471 sec) INFO:tensorflow:global_step/sec: 220.975 INFO:tensorflow:loss = 10.594796, step = 2201 (0.452 sec) INFO:tensorflow:global_step/sec: 219.289 INFO:tensorflow:loss = 10.4212265, step = 2301 (0.456 sec) INFO:tensorflow:global_step/sec: 215.123 INFO:tensorflow:loss = 9.668612, step = 2401 (0.465 sec) INFO:tensorflow:global_step/sec: 175.65 INFO:tensorflow:loss = 10.009649, step = 2501 (0.569 sec) INFO:tensorflow:global_step/sec: 206.962 INFO:tensorflow:loss = 10.477722, step = 2601 (0.483 sec) INFO:tensorflow:global_step/sec: 229.627 INFO:tensorflow:loss = 9.877638, step = 2701 (0.435 sec) INFO:tensorflow:global_step/sec: 195.792 INFO:tensorflow:loss = 10.274586, step = 2801 (0.512 sec) INFO:tensorflow:global_step/sec: 176.803 INFO:tensorflow:loss = 10.061047, step = 2901 (0.566 sec) INFO:tensorflow:Saving checkpoints for 3000 into train/linreg/model.ckpt. INFO:tensorflow:Loss for final step: 10.73032. <tensorflow.python.estimator.canned.dnn.DNNRegressor at 0x1818e63630>
Στο TensorFlow 2 η ίδια δουλειά γίνεται από την επανακλήση Keras TensorBoard, η οποία γράφει το γράφημα και τις μετρήσεις ανά εποχή χωρίς κανέναν κώδικα εκτιμητή:
logdir = "logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir) model.fit(train_images, train_labels, epochs=5, callbacks=[tensorboard_callback])
Μόλις ολοκληρωθεί η εκτέλεση, ο κατάλογος καταγραφής περιέχει ένα αρχείο ελέγχου, ένα graph.pbtxt αρχείο και ένα ή περισσότερα events.out.tfevents αρχεία — ακριβώς αυτό που διαβάζει το TensorBoard.
Για macOS Χρήστες
Η παρακάτω προβολή Finder εμφανίζει τον νέο φάκελο train/linreg που δημιουργήθηκε μέσα στον κατάλογο εργασίας.
Για Windows Χρήστες
On Windows Τα ίδια αρχεία εμφανίζονται κάτω από τη διαδρομή που δώσατε στο model_dir, όπως επισημαίνεται στη γραμμή διευθύνσεων.
Η ίδια μορφή αρχείου συμβάντος παράγεται από PyTorch, επομένως ο πίνακας ελέγχου δεν περιορίζεται σε εκτελέσεις TensorFlow.
Τώρα που έχετε γράψει τα συμβάντα καταγραφής, μπορείτε να ανοίξετε το TensorBoard. Το TensorBoard εξυπηρετεί στη θύρα 6006 από προεπιλογή (Jupyter χρησιμοποιεί τη θύρα 8888). Χρησιμοποιήστε το τερματικό στο macOS ή η προτροπή Anaconda στο Windows.
Για macOS Χρήστες
# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!
Το σημειωματάριο αποθηκεύεται στη διαδρομή /Users/Guru99/tuto_TF
Για Windows Χρήστες
cd C:\Users\Admin\Anaconda3 activate hello-tf
Το σημειωματάριο αποθηκεύεται στη διαδρομή C:\Users\Admin\Anaconda3
Για να ξεκινήσετε το TensorBoard, εκτελέστε την ακόλουθη εντολή από αυτόν τον κατάλογο.
Για macOS Χρήστες
tensorboard --logdir=./train/linreg
Για Windows Χρήστες
tensorboard --logdir=.\train\linreg
Το TensorBoard στη συνέχεια παρέχεται στη διεύθυνση http://localhost:6006
| Σημαία | Τι ελέγχει |
|---|---|
--logdir |
Κατάλογος που περιέχει τα αρχεία συμβάντων. Αυτή είναι η μόνη απαιτούμενη σημαία. |
--port |
Θύρα για προβολή. Η προεπιλογή είναι 6006. Αλλάξτε την όταν μια προηγούμενη συνεδρία εξακολουθεί να διατηρεί αυτήν τη θύρα. |
--bind_all |
Εξυπηρετεί σε κάθε διεπαφή δικτύου. Το TensorBoard συνδέεται μόνο με το localhost από προεπιλογή, επομένως η απομακρυσμένη πρόσβαση χρειάζεται αυτήν τη σημαία και δεν μπορεί να συνδυαστεί με --host. |
--reload_interval |
Πόσο συχνά, σε δευτερόλεπτα, σαρώνεται ξανά ο κατάλογος καταγραφής για νέα δεδομένα. |
--logdir_spec |
Παλαιό εφεδρικό πρόγραμμα που δέχεται αρκετές διαδρομές διαχωρισμένες με κόμμα. --logdir δεν υποστηρίζει πλέον αυτήν τη μορφή. |
The tensorboard dev Η δευτερεύουσα εντολή δεν λειτουργεί πλέον: η φιλοξενούμενη υπηρεσία TensorBoard.dev τερματίστηκε την 1η Ιανουαρίου 2024. Η τοπική χρήση δεν επηρεάζεται.
Σε ορισμένα μηχανήματα, η κονσόλα εκτυπώνει το όνομα του κεντρικού υπολογιστή αντί για το localhost, όπως στην παρακάτω προτροπή του Anaconda. Και οι δύο διευθύνσεις ανοίγουν τον ίδιο πίνακα ελέγχου.
Αντιγράψτε και επικολλήστε τη διεύθυνση στο αγαπημένο σας πρόγραμμα περιήγησης. Θα πρέπει να δείτε τον πίνακα ελέγχου Scalars που φαίνεται παρακάτω.
Αν δείτε κάτι σαν αυτό:
Αυτό σημαίνει ότι το TensorBoard δεν μπορεί να βρει το αρχείο καταγραφής. Βεβαιωθείτε ότι έχετε υποδείξει cd στη σωστή διαδρομή ή ελέγξτε ξανά ότι το συμβάν καταγραφής δημιουργήθηκε όντως. Εάν δεν δημιουργήθηκε, εκτελέστε ξανά τον κώδικα εκπαίδευσης.
Αν θέλετε να κλείσετε το TensorBoard, πατήστε CTRL+C στο παράθυρο του τερματικού.
Συμβουλή: ελέγξτε την προτροπή του Anaconda για τον τρέχοντα κατάλογο εργασίας.
Στο παραπάνω στιγμιότυπο οθόνης, η προτροπή βρίσκεται στο C:\Users\Admin, επομένως το αρχείο καταγραφής θα πρέπει να δημιουργηθεί σε αυτόν τον φάκελο.










