Βασικά στοιχεία TensorFlow: Tensor, Shape, Type, Sessions & Χειριστές

Πίνακας περιεχομένων:

Anonim

Τι είναι το Tensor;

Το όνομα του Tensorflow προέρχεται άμεσα από το βασικό του πλαίσιο: Tensor. Στο Tensorflow, όλοι οι υπολογισμοί περιλαμβάνουν τανυστές. Ένας τανυστής είναι ένας φορέας ή μήτρα η-διαστάσεων που αντιπροσωπεύει όλους τους τύπους δεδομένων. Όλες οι τιμές σε έναν τανυστή διατηρούν τον ίδιο τύπο δεδομένων με γνωστό (ή μερικώς γνωστό) σχήμα. Το σχήμα των δεδομένων είναι η διάσταση του πίνακα ή του πίνακα.

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

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

Στη Μηχανική Εκμάθηση, τα μοντέλα τροφοδοτούνται με μια λίστα αντικειμένων που ονομάζονται διανύσματα χαρακτηριστικών. Ένα διάνυσμα χαρακτηριστικών μπορεί να είναι οποιουδήποτε τύπου δεδομένων. Το διάνυσμα χαρακτηριστικών θα είναι συνήθως η κύρια είσοδος για τη συμπλήρωση ενός τανυστή. Αυτές οι τιμές θα ρέουν σε έναν κόμβο op μέσω του τανυστή και το αποτέλεσμα αυτής της λειτουργίας / υπολογισμού θα δημιουργήσει έναν νέο τανυστή ο οποίος με τη σειρά του θα χρησιμοποιηθεί σε μια νέα λειτουργία. Όλες αυτές οι λειτουργίες μπορούν να προβληθούν στο γράφημα.

Σε αυτό το σεμινάριο, θα μάθετε τα βασικά του TensorFlow όπως-

  • Τι είναι το Tensor;
  • Αναπαράσταση ενός τανυστή
  • Τύποι Tensor
  • Δημιουργήστε μια τάση n-διάστασης
  • Σχήμα τανυστή
  • Τύπος δεδομένων
  • Δημιουργία χειριστή
  • Μερικοί Χρήσιμοι χειριστές TensorFlow
  • Μεταβλητές
  • Χώρος κράτησης θέσης
  • Συνεδρία
  • Γραφική παράσταση

Αναπαράσταση ενός τανυστή

Στο TensorFlow, ένας τανυστής είναι μια συλλογή διανυσμάτων χαρακτηριστικών (δηλαδή, πίνακας) διαστάσεων n. Για παράδειγμα, εάν έχουμε μια μήτρα 2x3 με τιμές από 1 έως 6, γράφουμε:

Αναπαράσταση ενός τανυστή

Το TensorFlow αντιπροσωπεύει αυτόν τον πίνακα ως:

[[1, 2, 3],[4, 5, 6]] 

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

Το TensorFlow αντιπροσωπεύει αυτόν τον πίνακα ως:

[ [[1, 2],[[3, 4],[[5, 6],[[7,8] ] 

Σημείωση: Ένας τανυστής μπορεί να αναπαριστάται με μια βαθμίδα ή μπορεί να έχει σχήμα άνω των τριών διαστάσεων. Είναι πολύ πιο περίπλοκο να απεικονίσεις υψηλότερο επίπεδο διαστάσεων.

Τύποι Tensor

Στο TensorFlow, όλοι οι υπολογισμοί περνούν από έναν ή περισσότερους τανυστές. Ο tf.tensor είναι ένα αντικείμενο με τρεις ιδιότητες:

  • Μια μοναδική ετικέτα (όνομα)
  • Μια διάσταση (σχήμα)
  • Ένας τύπος δεδομένων (dtype)

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

  • βλ. Μεταβλητή
  • tf. σταθερό
  • tf. placeholder
  • tf. SparseTensor

Σε αυτό το σεμινάριο, θα μάθετε πώς να δημιουργείτε ένα tf.constant και ένα tf.Variable.

Προτού περάσουμε το σεμινάριο, βεβαιωθείτε ότι έχετε ενεργοποιήσει το περιβάλλον conda με το TensorFlow. Ονομάσαμε αυτό το περιβάλλον hello-tf.

Για χρήστες MacOS:

source activate hello-tf 

Για χρήστες Windows:

activate hello-tf 

Αφού το κάνετε αυτό, είστε έτοιμοι να εισαγάγετε tensorflow

# Import tfimport tensorflow as tf 

Δημιουργήστε μια τάση n-διάστασης

Ξεκινάτε με τη δημιουργία ενός τανυστή με μία διάσταση, δηλαδή μια βαθμίδα.

Για να δημιουργήσετε έναν τανυστή, μπορείτε να χρησιμοποιήσετε το tf.constant () όπως φαίνεται στο παρακάτω παράδειγμα σχήματος τανυστή TensorFlow:

tf.constant(value, dtype, name = "")arguments- `value`: Value of n dimension to define the tensor. Optional- `dtype`: Define the type of data:- `tf.string`: String variable- `tf.float32`: Float variable- `tf.int16`: Integer variable- "name": Name of the tensor. Optional. By default, `Const_1:0` 

Για να δημιουργήσετε μια τάση διάστασης 0, εκτελέστε τον ακόλουθο κώδικα

## rank 0# Default namer1 = tf.constant(1, tf.int16)print(r1)

Παραγωγή

Tensor("Const:0", shape=(), dtype=int16) 

# Named my_scalarr2 = tf.constant(1, tf.int16, name = "my_scalar")print(r2) 

Παραγωγή

Tensor("my_scalar:0", shape=(), dtype=int16) 

Κάθε τανυστής εμφανίζεται με το όνομα του τανυστή. Κάθε αντικείμενο tensor ορίζεται με χαρακτηριστικά tensor όπως μια μοναδική ετικέτα (όνομα), μια διάσταση (σχήμα) και τύποι δεδομένων TensorFlow (dtype).

Μπορείτε να ορίσετε έναν τανυστή με δεκαδικές τιμές ή με μια συμβολοσειρά αλλάζοντας τον τύπο δεδομένων.

# Decimalr1_decimal = tf.constant(1.12345, tf.float32)print(r1_decimal)# Stringr1_string = tf.constant("Guru99", tf.string)print(r1_string) 

Παραγωγή

Tensor("Const_1:0", shape=(), dtype=float32)Tensor("Const_2:0", shape=(), dtype=string) 

Ένας τανυστής διάστασης 1 μπορεί να δημιουργηθεί ως εξής:

## Rank 1r1_vector = tf.constant([1,3,5], tf.int16)print(r1_vector)r2_boolean = tf.constant([True, True, False], tf.bool)print(r2_boolean) 

Παραγωγή

Tensor("Const_3:0", shape=(3,), dtype=int16)Tensor("Const_4:0", shape=(3,), dtype=bool) 

Μπορείτε να παρατηρήσετε ότι το σχήμα TensorFlow αποτελείται μόνο από 1 στήλη.

Για να δημιουργήσετε έναν πίνακα διαστάσεων 2 τανυστών, πρέπει να κλείσετε τα αγκύλια μετά από κάθε σειρά. Δείτε το παρακάτω σχήμα σχήματος Keras Tensor

## Rank 2r2_matrix = tf.constant([ [1, 2],[3, 4] ],tf.int16)print(r2_matrix) 

Παραγωγή

Tensor("Const_5:0", shape=(2, 2), dtype=int16) 

Ο πίνακας έχει 2 σειρές και 2 στήλες γεμάτες με τιμές 1, 2, 3, 4.

Κατασκευάζεται ένας πίνακας με 3 διαστάσεις προσθέτοντας ένα άλλο επίπεδο με τα στηρίγματα.

## Rank 3r3_matrix = tf.constant([ [[1, 2],[3, 4],[5, 6]] ], tf.int16)print(r3_matrix) 

Παραγωγή

Tensor("Const_6:0", shape=(1, 3, 2), dtype=int16) 

Η μήτρα μοιάζει με τη δεύτερη εικόνα.

Σχήμα τανυστή

Όταν εκτυπώνετε τον τανυστή, το TensorFlow μαντεύει το σχήμα. Ωστόσο, μπορείτε να αποκτήσετε το σχήμα του τανυστή με την ιδιότητα σχήματος TensorFlow.

Παρακάτω, δημιουργείτε έναν πίνακα γεμάτο με έναν αριθμό από 10 έως 15 και ελέγχετε το σχήμα του m_shape

# Shape of tensorm_shape = tf.constant([ [10, 11],[12, 13],[14, 15] ])m_shape.shape 

Παραγωγή

TensorShape([Dimension(3), Dimension(2)]) 

Ο πίνακας έχει 3 σειρές και 2 στήλες.

Το TensorFlow έχει χρήσιμες εντολές για τη δημιουργία ενός διανύσματος ή μιας μήτρας γεμάτης με 0 ή 1. Για παράδειγμα, εάν θέλετε να δημιουργήσετε έναν τανυστή 1-D με συγκεκριμένο σχήμα 10, γεμάτο με 0, μπορείτε να εκτελέσετε τον παρακάτω κώδικα:

# Create a vector of 0print(tf.zeros(10)) 

Παραγωγή

Tensor("zeros:0", shape=(10,), dtype=float32) 

Το ακίνητο λειτουργεί και για το matrix. Εδώ, δημιουργείτε μια μήτρα 10x10 γεμάτη με 1

# Create a vector of 1print(tf.ones([10, 10])) 

Παραγωγή

Tensor("ones:0", shape=(10, 10), dtype=float32) 

Μπορείτε να χρησιμοποιήσετε το σχήμα ενός δεδομένου πίνακα για να δημιουργήσετε ένα διάνυσμα. Το matrix m_shape έχει διαστάσεις 3x2. Μπορείτε να δημιουργήσετε έναν τανυστή με 3 σειρές γεμάτες από έναν με τον ακόλουθο κωδικό:

# Create a vector of ones with the same number of rows as m_shapeprint(tf.ones(m_shape.shape[0])) 

Παραγωγή

Tensor("ones_1:0", shape=(3,), dtype=float32) 

Εάν περάσετε την τιμή 1 στο βραχίονα, μπορείτε να δημιουργήσετε ένα διάνυσμα που ισούται με τον αριθμό των στηλών στη μήτρα m_shape.

# Create a vector of ones with the same number of column as m_shapeprint(tf.ones(m_shape.shape[1])) 

Παραγωγή

Tensor("ones_2:0", shape=(2,), dtype=float32) 

Τέλος, μπορείτε να δημιουργήσετε ένα matrix 3x2 με μόνο ένα

print(tf.ones(m_shape.shape)) 

Παραγωγή

Tensor("ones_3:0", shape=(3, 2), dtype=float32) 

Τύπος δεδομένων

Η δεύτερη ιδιότητα του τανυστή είναι ο τύπος δεδομένων. Ένας τανυστής μπορεί να έχει μόνο έναν τύπο δεδομένων κάθε φορά. Ένας τανυστής μπορεί να έχει μόνο έναν τύπο δεδομένων. Μπορείτε να επιστρέψετε τον τύπο με την ιδιότητα dtype.

print(m_shape.dtype) 

Παραγωγή

 

Σε ορισμένες περιπτώσεις, θέλετε να αλλάξετε τον τύπο δεδομένων. Στο TensorFlow, είναι δυνατή με τη μέθοδο tf.cast.

Παράδειγμα

Παρακάτω, ένας τανυστής float μετατρέπεται σε ακέραιο χρησιμοποιώντας τη μέθοδο cast.

# Change type of datatype_float = tf.constant(3.123456789, tf.float32)type_int = tf.cast(type_float, dtype=tf.int32)print(type_float.dtype)print(type_int.dtype) 

Παραγωγή


 

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

Δημιουργία χειριστή

Μερικοί Χρήσιμοι χειριστές TensorFlow

Ξέρετε πώς να δημιουργήσετε έναν τανυστή με το TensorFlow. Είναι καιρός να μάθετε πώς να εκτελείτε μαθηματικές πράξεις.

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

Το τετράγωνο ενός αριθμού είναι κατασκευασμένο με tf.sqrt (x) με x ως κυμαινόμενο αριθμό.

x = tf.constant([2.0], dtype = tf.float32)print(tf.sqrt(x)) 

Παραγωγή

Tensor("Sqrt:0", shape=(1,), dtype=float32) 

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

Ακολουθεί μια λίστα με τις συνήθεις λειτουργίες. Η ιδέα είναι η ίδια. Κάθε λειτουργία απαιτεί ένα ή περισσότερα ορίσματα.

  • tf.add (α, β)
  • tf. περίληψη (a, b)
  • tf. Πολλαπλά (a, b)
  • tf.div (α, β)
  • tf.pow (α, β)
  • tf.exp (α)
  • tf.sqrt (α)

Παράδειγμα

# Addtensor_a = tf.constant([[1,2]], dtype = tf.int32)tensor_b = tf.constant([[3, 4]], dtype = tf.int32)tensor_add = tf.add(tensor_a, tensor_b)print(tensor_add) 

Παραγωγή

Tensor("Add:0", shape=(1, 2), dtype=int32) 

Επεξήγηση κώδικα

Δημιουργήστε δύο τανυστές:

  • ένας τανυστής με 1 και 2
  • ένας τανυστής με 3 και 4

Προσθέτετε και τους δύο τανυστές.

Σημείωση : ότι και οι δύο τανυστές πρέπει να έχουν το ίδιο σχήμα. Μπορείτε να εκτελέσετε πολλαπλασιασμό στους δύο τανυστές.

# Multiplytensor_multiply = tf.multiply(tensor_a, tensor_b)print(tensor_multiply) 

Παραγωγή

Tensor("Mul:0", shape=(1, 2), dtype=int32) 

Μεταβλητές

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

Για να δημιουργήσετε μια μεταβλητή, μπορείτε να χρησιμοποιήσετε τη μέθοδο tf.get_variable ()

tf.get_variable(name = "", values, dtype, initializer)argument- `name = ""`: Name of the variable- `values`: Dimension of the tensor- `dtype`: Type of data. Optional- `initializer`: How to initialize the tensor. OptionalIf initializer is specified, there is no need to include the `values` as the shape of `initializer` is used. 

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

# Create a Variable## Create 2 Randomized valuesvar = tf.get_variable("var", [1, 2])print(var.shape) 

Παραγωγή

(1, 2) 

Στο δεύτερο παράδειγμα, δημιουργείτε μια μεταβλητή με μία σειρά και δύο στήλες. Πρέπει να χρησιμοποιήσετε το [1,2] για να δημιουργήσετε τη διάσταση της μεταβλητής

Οι αρχικές τιμές αυτού του τανυστή είναι μηδέν. Για παράδειγμα, όταν εκπαιδεύετε ένα μοντέλο, πρέπει να έχετε αρχικές τιμές για να υπολογίσετε το βάρος των χαρακτηριστικών. Παρακάτω, ορίζετε αυτές τις αρχικές τιμές στο μηδέν.

var_init_1 = tf.get_variable("var_init_1", [1, 2], dtype=tf.int32, initializer=tf.zeros_initializer)print(var_init_1.shape) 

Παραγωγή

(1, 2) 

Μπορείτε να μεταβιβάσετε τις τιμές ενός σταθερού τανυστή σε μια μεταβλητή. Δημιουργείτε έναν σταθερό τανυστή με τη μέθοδο tf.constant (). Χρησιμοποιείτε αυτόν τον τανυστή για να αρχικοποιήσετε τη μεταβλητή.

Οι πρώτες τιμές της μεταβλητής είναι 10, 20, 30 και 40. Ο νέος τανυστής θα έχει σχήμα 2x2.

# Create a 2x2 matrixtensor_const = tf.constant([[10, 20],[30, 40]])# Initialize the first value of the tensor equals to tensor_constvar_init_2 = tf.get_variable("var_init_2", dtype=tf.int32, initializer=tensor_const)print(var_init_2.shape) 

Παραγωγή

(2, 2) 

Χώρος κράτησης θέσης

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

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

Η σύνταξη είναι:

tf.placeholder(dtype,shape=None,name=None )arguments:- `dtype`: Type of data- `shape`: dimension of the placeholder. Optional. By default, shape of the data- `name`: Name of the placeholder. Optionaldata_placeholder_a = tf.placeholder(tf.float32, name = "data_placeholder_a")print(data_placeholder_a) 

Παραγωγή

Tensor("data_placeholder_a:0", dtype=float32) 

Συνεδρία

Το TensorFlow λειτουργεί γύρω από 3 κύρια συστατικά:

  • Γραφική παράσταση
  • Τανύων μύς
  • Συνεδρία
Συστατικά Περιγραφή

Γραφική παράσταση

Το γράφημα είναι θεμελιώδες στο TensorFlow. Όλες οι μαθηματικές πράξεις (ops) εκτελούνται μέσα σε ένα γράφημα. Μπορείτε να φανταστείτε ένα γράφημα ως έργο όπου γίνονται όλες οι λειτουργίες. Οι κόμβοι αντιπροσωπεύουν αυτές τις λειτουργίες, μπορούν να απορροφήσουν ή να δημιουργήσουν νέους τανυστές.

Τανύων μύς

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

Συνεδρία

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

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

Στο παρακάτω παράδειγμα, θα:

  • Δημιουργήστε δύο τανυστές
  • Δημιουργήστε μια λειτουργία
  • Ανοίξτε μια συνεδρία
  • Εκτυπώστε το αποτέλεσμα

Βήμα 1) Δημιουργείτε δύο τανυστές x και y

## Create, run and evaluate a sessionx = tf.constant([2])y = tf.constant([4]) 

Βήμα 2) Δημιουργείτε τον τελεστή πολλαπλασιάζοντας τα x και y

## Create operatormultiply = tf.multiply(x, y) 

Βήμα 3) Ανοίγετε μια συνεδρία. Όλοι οι υπολογισμοί θα πραγματοποιηθούν εντός της συνεδρίας. Όταν τελειώσετε, πρέπει να κλείσετε τη συνεδρία.

## Create a session to run the codesess = tf.Session()result_1 = sess.run(multiply)print(result_1)sess.close() 

Παραγωγή

[8] 

Επεξήγηση κώδικα

  • tf. Συνεδρία (): Άνοιγμα περιόδου σύνδεσης. Όλες οι λειτουργίες θα ρέουν εντός των συνεδριών
  • run (multiply): εκτελέστε τη λειτουργία που δημιουργήθηκε στο βήμα 2.
  • εκτύπωση (αποτέλεσμα_1): Τέλος, μπορείτε να εκτυπώσετε το αποτέλεσμα
  • κλείσιμο (): Κλείσιμο της συνεδρίας

Το αποτέλεσμα δείχνει 8, που είναι ο πολλαπλασιασμός των x και y.

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

with tf.Session() as sess:result_2 = multiply.eval()print(result_2) 

Παραγωγή

[8] 

Σε ένα πλαίσιο της περιόδου σύνδεσης, μπορείτε να χρησιμοποιήσετε τη μέθοδο eval () για την εκτέλεση της λειτουργίας. Είναι ισοδύναμο με το τρέξιμο (). Κάνει τον κώδικα πιο ευανάγνωστο.

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

## Check the tensors created beforesess = tf.Session()print(sess.run(r1))print(sess.run(r2_matrix))print(sess.run(r3_matrix)) 

Παραγωγή

1[[1 2][3 4]][[[1 2][3 4][5 6]]] 

Οι μεταβλητές είναι κενές από προεπιλογή, ακόμη και μετά τη δημιουργία ενός τανυστή. Πρέπει να αρχικοποιήσετε τη μεταβλητή εάν θέλετε να χρησιμοποιήσετε τη μεταβλητή. Το αντικείμενο tf.global_variables_initializer () πρέπει να κληθεί για να προετοιμάσει τις τιμές μιας μεταβλητής. Αυτό το αντικείμενο θα προετοιμάσει ρητά όλες τις μεταβλητές. Αυτό είναι χρήσιμο προτού εκπαιδεύσετε ένα μοντέλο.

Μπορείτε να ελέγξετε τις τιμές των μεταβλητών που δημιουργήσατε στο παρελθόν. Σημειώστε ότι πρέπει να χρησιμοποιήσετε το τρέξιμο για να αξιολογήσετε τον τανυστή

sess.run(tf.global_variables_initializer())print(sess.run(var))print(sess.run(var_init_1))print(sess.run(var_init_2)) 

Παραγωγή

[[-0.05356491 0.75867283]][[0 0]][[10 20][30 40]] 

Μπορείτε να χρησιμοποιήσετε το σύμβολο κράτησης θέσης που δημιουργήσατε στο παρελθόν και να το τροφοδοτήσετε με πραγματική τιμή. Πρέπει να μεταβιβάσετε τα δεδομένα στη μέθοδο feed_dict.

Για παράδειγμα, θα λάβετε τη δύναμη των 2 από τα δεδομένα placeholder_placeholder_a.

import numpy as nppower_a = tf.pow(data_placeholder_a, 2)with tf.Session() as sess:data = np.random.rand(1, 10)print(sess.run(power_a, feed_dict={data_placeholder_a: data})) # Will succeed. 

Επεξήγηση κώδικα

  • εισαγωγή numpy ως np: Εισαγωγή numpy βιβλιοθήκης για τη δημιουργία των δεδομένων
  • tf.pow (data_placeholder_a, 2): Δημιουργήστε τις λειτουργίες
  • np.random.rand (1, 10): Δημιουργήστε έναν τυχαίο πίνακα δεδομένων
  • feed_dict = {data_placeholder_a: data}: Τροφοδοτήστε το σύμβολο κράτησης θέσης με δεδομένα

Παραγωγή

[[0.05478134 0.27213147 0.8803037 0.0398424 0.21172127 0.01444725 0.02584014 0.3763949 0.66022706 0.7565559 ]] 

Γραφική παράσταση

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

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

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

Ας δούμε ένα παράδειγμα.

Φανταστείτε ότι θέλετε να αξιολογήσετε την ακόλουθη λειτουργία:

Το TensorFlow θα δημιουργήσει ένα γράφημα για την εκτέλεση της λειτουργίας. Το γράφημα μοιάζει με αυτό:

Παράδειγμα γραφήματος TensorFlow

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

Για παράδειγμα, μπορείτε να δείτε ότι η λειτουργία προσθήκης δεν μπορεί να γίνει πριν και. Το γράφημα εξηγεί ότι:

  1. υπολογισμός και:
  2. προσθέστε 1) μαζί
  3. προσθήκη σε 2)
  4. προσθήκη 3) στο
x = tf.get_variable("x", dtype=tf.int32, initializer=tf.constant([5]))z = tf.get_variable("z", dtype=tf.int32, initializer=tf.constant([6]))c = tf.constant([5], name = "constant")square = tf.constant([2], name = "square")f = tf.multiply(x, z) + tf.pow(x, square) + z + c 

Επεξήγηση κώδικα

  • x: Αρχικοποιήστε μια μεταβλητή που ονομάζεται x με σταθερή τιμή 5
  • z: Αρχικοποιήστε μια μεταβλητή που ονομάζεται z με σταθερή τιμή 6
  • c: Αρχικοποιήστε έναν σταθερό τανυστή που ονομάζεται c με σταθερή τιμή 5
  • τετράγωνο: Αρχικοποιήστε έναν σταθερό τανυστή που ονομάζεται τετράγωνο με σταθερή τιμή 2
  • στ: Κατασκευάστε τον χειριστή

Σε αυτό το παράδειγμα, επιλέγουμε να διατηρήσουμε τις τιμές των μεταβλητών σταθερές. Δημιουργήσαμε επίσης έναν σταθερό τανυστή που ονομάζεται c που είναι η σταθερή παράμετρος στη συνάρτηση f. Χρειάζεται μια σταθερή τιμή 5. Στο γράφημα, μπορείτε να δείτε αυτήν την παράμετρο στον τανυστή που ονομάζεται σταθερά.

Κατασκευάσαμε επίσης έναν σταθερό τανυστή για την ισχύ στο χειριστή tf.pow (). Δεν είναι απαραίτητο. Το κάναμε έτσι ώστε να μπορείτε να δείτε το όνομα του τανυστή στο γράφημα. Είναι ο κύκλος που ονομάζεται τετράγωνο.

Από το γράφημα, μπορείτε να καταλάβετε τι θα συμβεί στους τανυστές και πώς μπορεί να επιστρέψει μια έξοδο 66.

Ο παρακάτω κώδικας αξιολογεί τη συνάρτηση σε μια συνεδρία.

init = tf.global_variables_initializer() # prepare to initialize all variableswith tf.Session() as sess:init.run() # Initialize x and yfunction_result = f.eval()print(function_result) 

Παραγωγή

[66] 

Περίληψη

Το TensorFlow λειτουργεί γύρω από:

  • Γράφημα : Υπολογιστικό περιβάλλον που περιέχει τις λειτουργίες και τους τανυστές
  • Tensors : Αντιπροσωπεύει τα δεδομένα (ή την τιμή) που θα ρέουν στο γράφημα. Είναι το άκρο στο γράφημα
  • Συνεδρίες : Επιτρέψτε την εκτέλεση των λειτουργιών

Δημιουργήστε έναν σταθερό τανυστή

συνεχής αντικείμενο

Δ0

tf.constant (1, tf.int16)

Δ1

tf.constant ([1,3,5], tf.int16)

Δ2

tf.constant ([[1, 2], [3, 4]], tf.int16)

Δ3

tf.constant ([[[1, 2], [3, 4], [5, 6]]], tf.int16)

Δημιουργήστε έναν χειριστή

Δημιουργήστε έναν χειριστή Αντικείμενο

α + β

tf.add (α, β)

α * β

tf. Πολλαπλά (a, b)

Δημιουργήστε μια μεταβλητή τάση

Δημιουργήστε μια μεταβλητή

αντικείμενο

τυχαιοποιημένη τιμή

tf.get_variable ("var", [1, 2])

αρχικοποιημένη πρώτη τιμή

tf.get_variable ("var_init_2", dtype = tf.int32, αρχικοποιητής = [[1, 2], [3, 4]])

Ανοίξτε μια συνεδρία

Συνεδρία αντικείμενο

Δημιουργήστε μια συνεδρία

tf. Συνεδρία ()

Εκτελέστε μια συνεδρία

tf.Session.run ()

Αξιολογήστε έναν τανυστή

variable_name.eval ()

Κλείστε μια συνεδρία

sess.close ()

Συνεδρία κατά μπλοκ

με tf. Συνεδρία () ως sess: