Notions de base de TensorFlow : tenseur, forme, type, sessions et Operajeudi

Qu'est-ce qu'un tenseur ?

Le nom de Tensorflow est directement dรฉrivรฉ de son framework principal : Tensor. Dans Tensorflow, tous les calculs impliquent des tenseurs. Un tenseur est un vecteur ou une matrice ร  n dimensions qui reprรฉsente tous les types de donnรฉes. Toutes les valeurs d'un tenseur contiennent un type de donnรฉes identique avec une forme connue (ou partiellement connue). La forme des donnรฉes correspond ร  la dimensionnalitรฉ de la matrice ou du tableau.

Un tenseur peut provenir des donnรฉes d'entrรฉe ou du rรฉsultat d'un calcul. Dans TensorFlow, toutes les opรฉrations sont effectuรฉes dans un graphique. Le graphe est un ensemble de calculs qui s'effectuent successivement. Chaque opรฉration est appelรฉe nล“ud opรฉrationnel et est connectรฉe les unes aux autres.

Le graphique dรฉcrit les opรฉrations et les connexions entre les nล“uds. Cependant, il n'affiche pas les valeurs. Le bord des nล“uds est le tenseur, c'est-ร -dire un moyen de remplir l'opรฉration avec des donnรฉes.

Dans le Machine Learning, les modรจles sont alimentรฉs par une liste dโ€™objets appelรฉs vecteurs de caractรฉristiques. Un vecteur de caractรฉristiques peut รชtre de nโ€™importe quel type de donnรฉes. Le vecteur de caractรฉristiques sera gรฉnรฉralement la principale entrรฉe pour remplir un tenseur. Ces valeurs circuleront dans un nล“ud opรฉrationnel via le tenseur et le rรฉsultat de cette opรฉration/calcul crรฉera un nouveau tenseur qui ร  son tour sera utilisรฉ dans une nouvelle opรฉration. Toutes ces opรฉrations peuvent รชtre visualisรฉes dans le graphique.

Reprรฉsentation d'un tenseur

Dans TensorFlow, un tenseur est une collection de vecteurs de caractรฉristiques (c'est-ร -dire un tableau) ร  n dimensions. Par exemple, si on a une matrice 2ร—3 avec des valeurs de 1 ร  6, on รฉcrit :

Reprรฉsentation d'un tenseur
Reprรฉsentation d'un tenseur

TensorFlow reprรฉsente cette matrice comme :

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

Si nous crรฉons une matrice tridimensionnelle avec des valeurs de 1 ร  8, nous avons :

Reprรฉsentation d'un tenseur

TensorFlow reprรฉsente cette matrice comme :

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

ร€ noter: Un tenseur peut รชtre reprรฉsentรฉ par un scalaire ou peut avoir une forme ร  plus de trois dimensions. Il est tout simplement plus compliquรฉ de visualiser un niveau de dimension supรฉrieur.

Types de tenseur

Dans TensorFlow, tous les calculs passent par un ou plusieurs tenseurs. Un tf.tensor est un objet avec trois propriรฉtรฉs :

  • Une รฉtiquette unique (nom)
  • Une dimension (forme)
  • Un type de donnรฉes (dtype)

Chaque opรฉration que vous effectuerez avec TensorFlow implique la manipulation d'un tenseur. Il existe quatre types de tenseurs principaux que vous pouvez crรฉer :

  • tf.Variable
  • tf.constante
  • tf.espace rรฉservรฉ
  • tf.SparseTensor

Dans ce didacticiel, vous apprendrez ร  crรฉer un tf.constant et un tf.Variable.

Avant de parcourir le didacticiel, assurez-vous d'activer l'environnement conda avec TensorFlow. Nous avons nommรฉ cet environnement hello-tf.

Pour les utilisateurs de MacOS :

source activate hello-tf

Pour Windows utilisateur:

activate hello-tf

Aprรจs avoir fait cela, vous รชtes prรชt ร  importer Tensorflow

# Import tf
import tensorflow as tf

Crรฉer un tenseur de dimension n

Vous commencez par la crรฉation d'un tenseur ร  une dimension, ร  savoir un scalaire.

Pour crรฉer un tenseur, vous pouvez utiliser tf.constant() comme indiquรฉ dans l'exemple de forme de tensor TensorFlow ci-dessous :

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`

Pour crรฉer un tenseur de dimension 0, exรฉcutez le code suivant

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

Sortie

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

Crรฉer un tenseur de n-dimension

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

Sortie

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

Chaque tenseur est affichรฉ par son nom. Chaque objet tensoriel est dรฉfini avec des attributs tensoriels tels qu'une รฉtiquette unique (nom), une dimension (forme) et des types de donnรฉes TensorFlow (dtype).

Vous pouvez dรฉfinir un tenseur avec des valeurs dรฉcimales ou avec une chaรฎne en changeant le type de donnรฉes.

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

Sortie

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

Un tenseur de dimension 1 peut รชtre crรฉรฉ comme suit :

## 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)

Sortie

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

Vous pouvez remarquer que la forme TensorFlow n'est composรฉe que d'une seule colonne.

Pour crรฉer un tableau de 2 dimensions tensorielles, vous devez fermer les parenthรจses aprรจs chaque ligne. Consultez l'exemple de forme Keras Tensor ci-dessous

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

Sortie

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

La matrice comporte 2 lignes et 2 colonnes remplies de valeurs 1, 2, 3, 4.

Une matrice ร  3 dimensions est construite en ajoutant un autre niveau avec les parenthรจses.

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

Sortie

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

La matrice ressemble ร  la photo deux.

Forme du tenseur

Lorsque vous imprimez un tenseur, TensorFlow devine la forme. Cependant, vous pouvez obtenir la forme du tenseur avec la propriรฉtรฉ de forme TensorFlow.

Ci-dessous, vous construisez une matrice remplie d'un nombre de 10 ร  15 et vous vรฉrifiez la forme de m_shape

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

Sortie

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

La matrice comporte 3 lignes et 2 colonnes.

TensorFlow dispose de commandes utiles pour crรฉer un vecteur ou une matrice remplie de 0 ou 1. Par exemple, si vous souhaitez crรฉer un tenseur 1D avec une forme spรฉcifique de 10, rempli de 0, vous pouvez exรฉcuter le code ci-dessous :

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

Sortie

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

La propriรฉtรฉ fonctionne รฉgalement pour la matrice. Ici, vous crรฉez une matrice 10ร—10 remplie de 1

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

Sortie

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

Vous pouvez utiliser la forme d'une matrice donnรฉe pour crรฉer un vecteur de uns. La matrice m_shape est de dimensions 3ร—2. Vous pouvez crรฉer un tenseur avec 3 lignes remplies par une avec le code suivant :

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

Sortie

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

Si vous passez la valeur 1 entre parenthรจses, vous pouvez construire un vecteur de uns รฉgal au nombre de colonnes dans la matrice m_shape.

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

Sortie

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

Enfin, vous pouvez crรฉer une matrice 3ร—2 avec un seul

print(tf.ones(m_shape.shape))

Sortie

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

Type de donnรฉes

La deuxiรจme propriรฉtรฉ d'un tenseur est le type de donnรฉes. Un tenseur ne peut avoir qu'un seul type de donnรฉes ร  la fois. Un tenseur ne peut avoir qu'un seul type de donnรฉes. Vous pouvez renvoyer le type avec la propriรฉtรฉ dtype.

print(m_shape.dtype)

Sortie

<dtype: 'int32'>

Dans certains cas, vous souhaitez modifier le type de donnรฉes. Dans TensorFlow, c'est possible avec la mรฉthode tf.cast.

Exemple

Ci-dessous, un tenseur flottant est converti en entier en utilisant la mรฉthode cast.

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

Sortie

<dtype: 'float32'>
<dtype: 'int32'>

TensorFlow choisit automatiquement le type de donnรฉes lorsque l'argument n'est pas spรฉcifiรฉ lors de la crรฉation du tenseur. TensorFlow devinera quels sont les types de donnรฉes les plus probables. Par exemple, si vous transmettez un texte, il devinera qu'il s'agit d'une chaรฎne et le convertira en chaรฎne.

Opรฉrateur de crรฉation

Quelques opรฉrateurs TensorFlow utiles

Vous savez crรฉer un tenseur avec TensorFlow. Il est temps d'apprendre ร  effectuer des opรฉrations mathรฉmatiques.

TensorFlow contient toutes les opรฉrations de base. Vous pouvez commencer par un simple. Vous utiliserez la mรฉthode TensorFlow pour calculer le carrรฉ d'un nombre. Cette opรฉration est simple car un seul argument est nรฉcessaire pour construire le tenseur.

Le carrรฉ d'un nombre est construit avec tf.sqrt(x) avec x comme nombre flottant.

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

Sortie

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

ร€ noter: La sortie a renvoyรฉ un objet tenseur et non le rรฉsultat du carrรฉ de 2. Dans l'exemple, vous imprimez la dรฉfinition du tenseur et non l'รฉvaluation rรฉelle de l'opรฉration. Dans la section suivante, vous apprendrez comment TensorFlow fonctionne pour exรฉcuter les opรฉrations.

Voici une liste des opรฉrations couramment utilisรฉes. L'idรฉe est la mรชme. Chaque opรฉration nรฉcessite un ou plusieurs arguments.

  • tf.ajouter(a, b)
  • tf.substract(a, b)
  • tf.multiplier (a, b)
  • tf.div(a, b)
  • tf.pow(a, b)
  • tf.exp(a)
  • tf.sqrt(a)

Exemple

# Add
tensor_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)

Sortie

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

Code Explication

Crรฉez deux tenseurs :

  • un tenseur avec 1 et 2
  • un tenseur avec 3 et 4

Vous additionnez les deux tenseurs.

Avis : que les deux tenseurs doivent avoir la mรชme forme. Vous pouvez exรฉcuter une multiplication sur les deux tenseurs.

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

Sortie

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

Variables

Jusqu'ร  prรฉsent, vous n'avez crรฉรฉ que des tenseurs constants. Ce n'est pas d'une grande utilitรฉ. Les donnรฉes arrivent toujours avec des valeurs diffรฉrentes, pour capturer cela, vous pouvez utiliser la classe Variable. Il reprรฉsentera un nล“ud oรน les valeurs changent toujours.

Pour crรฉer une variable, vous pouvez utiliser la mรฉthode 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. Optional
If initializer is specified, there is no need to include the `values` as the shape of `initializer` is used.

Par exemple, le code ci-dessous crรฉe une variable bidimensionnelle avec deux valeurs alรฉatoires. Par dรฉfaut, TensorFlow renvoie une valeur alรฉatoire. Vous nommez la variable var

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

Sortie

(1, 2)

Dans le deuxiรจme exemple, vous crรฉez une variable avec une ligne et deux colonnes. Vous devez utiliser [1,2] pour crรฉer la dimension de la variable

Les valeurs initiales de ce tenseur sont nulles. Par exemple, lorsque vous entraรฎnez un modรจle, vous devez disposer de valeurs initiales pour calculer le poids des fonctionnalitรฉs. Ci-dessous, vous dรฉfinissez ces valeurs initiales sur zรฉro.

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

Sortie

(1, 2)

Vous pouvez transmettre les valeurs d'un tenseur constant dans une variable. Vous crรฉez un tenseur constant avec la mรฉthode tf.constant(). Vous utilisez ce tenseur pour initialiser la variable.

Les premiรจres valeurs de la variable sont 10, 20, 30 et 40. Le nouveau tenseur aura une forme de 2ร—2.

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

Sortie

(2, 2)

placeholder

Un espace rรฉservรฉ a pour but d'alimenter le tenseur. L'espace rรฉservรฉ est utilisรฉ pour initialiser les donnรฉes ร  circuler ร  l'intรฉrieur des tenseurs. Pour fournir un espace rรฉservรฉ, vous devez utiliser la mรฉthode feed_dict. L'espace rรฉservรฉ sera alimentรฉ uniquement au cours d'une session.

Dans l'exemple suivant, vous verrez comment crรฉer un espace rรฉservรฉ avec la mรฉthode tf.placeholder. Dans la prochaine session, vous apprendrez ร  alimenter un espace rรฉservรฉ avec une valeur tensorielle rรฉelle.

La syntaxe est:

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. Optional			
data_placeholder_a = tf.placeholder(tf.float32, name = "data_placeholder_a")
print(data_placeholder_a)

Sortie

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

Session

TensorFlow fonctionne autour de 3 composants principaux :

  • Graphique
  • tenseur
  • Session
Composants DESCRITPTION
Graphique Le graphique est fondamental dans TensorFlow. Toutes les opรฉrations mathรฉmatiques (ops) sont effectuรฉes ร  l'intรฉrieur d'un graphique. Vous pouvez imaginer un graphique comme un projet oรน toutes les opรฉrations sont effectuรฉes. Les nล“uds reprรฉsentent ces opรฉrations, ils peuvent absorber ou crรฉer de nouveaux tenseurs.
tenseur Un tenseur reprรฉsente les donnรฉes qui progressent entre les opรฉrations. Vous avez vu prรฉcรฉdemment comment initialiser un tenseur. La diffรฉrence entre une constante et une variable rรฉside dans le fait que les valeurs initiales d'une variable changeront avec le temps.
Session Une session exรฉcutera l'opรฉration ร  partir du graphique. Pour alimenter le graphique avec les valeurs d'un tenseur, vous devez ouvrir une session. Dans une session, vous devez exรฉcuter un opรฉrateur pour crรฉer une sortie.

Les graphiques et les sessions sont indรฉpendants. Vous pouvez exรฉcuter une session et obtenir les valeurs ร  utiliser ultรฉrieurement pour des calculs ultรฉrieurs.

Dans l'exemple ci-dessous, vous allez :

  • Crรฉer deux tenseurs
  • Crรฉer une opรฉration
  • Ouvrir une session
  • Imprimer le rรฉsultat

ร‰tape 1) Vous crรฉez deux tenseurs x et y

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

ร‰tape 2) Vous crรฉez l'opรฉrateur en multipliant x et y

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

ร‰tape 3) Vous ouvrez une session. Tous les calculs auront lieu au cours de la session. Lorsque vous avez terminรฉ, vous devez fermer la session.

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

Sortie

[8]

Code explication

  • tf.Session() : ouvre une session. Toutes les opรฉrations se dรฉrouleront au sein des sessions
  • run(multiply) : exรฉcute l'opรฉration crรฉรฉe ร  l'รฉtape 2.
  • print(result_1) : Enfin, vous pouvez imprimer le rรฉsultat
  • close() : Ferme la session

Le rรฉsultat montre 8, qui est la multiplication de x et y.

Une autre faรงon de crรฉer une session consiste ร  l'intรฉrieur d'un bloc. L'avantage est qu'il ferme automatiquement la session.

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

Sortie

[8]

Dans un contexte de session, vous pouvez utiliser la mรฉthode eval() pour exรฉcuter l'opรฉration. C'est รฉquivalent ร  run(). Cela rend le code plus lisible.

Vous pouvez crรฉer une session et voir les valeurs ร  l'intรฉrieur des tenseurs que vous avez crรฉรฉs jusqu'ร  prรฉsent.

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

Sortie

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

Les variables sont vides par dรฉfaut, mรชme aprรจs avoir crรฉรฉ un tenseur. Vous devez initialiser la variable si vous souhaitez utiliser la variable. L'objet tf.global_variables_initializer() doit รชtre appelรฉ pour initialiser les valeurs d'une variable. Cet objet initialisera explicitement toutes les variables. Ceci est utile avant dโ€™entraรฎner un modรจle.

Vous pouvez vรฉrifier les valeurs des variables que vous avez crรฉรฉes auparavant. Notez que vous devez utiliser run pour รฉvaluer le tenseur

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

Sortie

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

Vous pouvez utiliser l'espace rรฉservรฉ que vous avez crรฉรฉ auparavant et l'alimenter avec la valeur rรฉelle. Vous devez transmettre les donnรฉes dans la mรฉthode feed_dict.

Par exemple, vous prendrez la puissance 2 de l'espace rรฉservรฉ data_placeholder_a.

import numpy as np
power_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.

Code Explication

  • importer numpy en tant que np : importer bibliothรจque numpy pour crรฉer les donnรฉes
  • tf.pow (data_placeholder_a, 2) : crรฉer les opรฉrations
  • np.random.rand(1, 10) : crรฉer un tableau alรฉatoire de donnรฉes
  • feed_dict={data_placeholder_a: data} : Alimenter l'espace rรฉservรฉ avec des donnรฉes

Sortie

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

Graphique

TensorFlow dรฉpend d'une approche gรฉniale pour restituer l'opรฉration. Tous les calculs sont reprรฉsentรฉs avec un schรฉma de flux de donnรฉes. Le graphique de flux de donnรฉes a รฉtรฉ dรฉveloppรฉ pour veiller aux dรฉpendances des donnรฉes entre les opรฉrations individuelles. Une formule mathรฉmatique ou un algorithme est constituรฉ d'un certain nombre d'opรฉrations successives. Un graphique est un moyen pratique de visualiser la faรงon dont les calculs sont coordonnรฉs.

Le graphique montre un nล“ud et le bord. Le nล“ud est la reprรฉsentation d'une opรฉration, c'est ร  dire l'unitรฉ de calcul. L'arรชte est le tenseur, elle peut produire un nouveau tenseur ou consommer les donnรฉes d'entrรฉe. Cela dรฉpend des dรฉpendances entre les opรฉrations individuelles.

La structure du graphe relie les opรฉrations (c'est-ร -dire les nล“uds) et la faรงon dont ces opรฉrations sont alimentรฉes. Notez que le graphique n'affiche pas le rรฉsultat des opรฉrations, il permet uniquement de visualiser le lien entre les opรฉrations individuelles.

Voyons un exemple.

Imaginez que vous souhaitiez รฉvaluer la fonction suivante :

Graphique

TensorFlow crรฉera un graphique pour exรฉcuter la fonction. Le graphique ressemble ร  ceci :

Exemple de graphique TensorFlow

Exemple de graphique TensorFlow

Vous pouvez facilement voir le chemin que prendront les tenseurs pour atteindre la destination finale.

Par exemple, vous pouvez voir que l'opรฉration add ne peut pas รชtre effectuรฉe avant et . Le graphique explique que cela :

  1. calculer et :
  2. ajouter 1) ensemble
  3. ajouter ร  2)
  4. ajouter 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

Code Explication

  • x : initialise une variable appelรฉe x avec une valeur constante de 5
  • z : Initialiser une variable appelรฉe z avec une valeur constante de 6
  • c : Initialiser un tenseur constant appelรฉ c avec une valeur constante de 5
  • carrรฉ : initialise un tenseur constant appelรฉ carrรฉ avec une valeur constante de 2
  • f : Construire l'opรฉrateur

Dans cet exemple, nous choisissons de garder les valeurs des variables fixes. Nous avons รฉgalement crรฉรฉ un tenseur constant appelรฉ c qui est le paramรจtre constant de la fonction f. Il prend une valeur fixe de 5. Dans le graphique, vous pouvez voir ce paramรจtre dans le tenseur appelรฉ constante.

Nous avons รฉgalement construit un tenseur constant pour la puissance dans l'opรฉrateur tf.pow(). Ce n'est pas nรฉcessaire. Nous l'avons fait pour que vous puissiez voir le nom du tenseur dans le graphique. C'est le cercle appelรฉ carrรฉ.

ร€ partir du graphique, vous pouvez comprendre ce qui se passera avec les tenseurs et comment ils peuvent renvoyer une sortie de 66.

Le code ci-dessous รฉvalue la fonction dans une session.

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

Sortie

[66]

Rรฉsumรฉ

TensorFlow fonctionne autour de :

  • Graphique: Environnement informatique contenant les opรฉrations et les tenseurs
  • Tenseurs: Reprรฉsente les donnรฉes (ou la valeur) qui circuleront dans le graphique. C'est le bord du graphique
  • Sessions: Permettre l'exรฉcution des opรฉrations

Crรฉer un tenseur constant

constant objet
D0 tf.constant(1, tf.int16)
D1 tf.constant([1,3,5], tf.int16)
D2 tf.constant([ [1, 2], [3, 4] ],tf.int16)
D3 tf.constant([ [[1, 2],[3, 4], [5, 6]] ], tf.int16)

Crรฉer un opรฉrateur

Crรฉer un opรฉrateur Sujet
a + b tf.ajouter(a, b)
a * b tf.multiplier (a, b)

Crรฉer un tenseur variable

Crรฉer une variable objet
valeur alรฉatoire tf.get_variable("var", [1, 2])
premiรจre valeur initialisรฉe tf.get_variable("var_init_2", dtype=tf.int32, initializer=[ [1, 2], [3, 4] ])

Ouvrir une session

Session objet
Crรฉer une sรฉance tf.Session()
Exรฉcuter une session tf.Session.run()
ร‰valuer un tenseur nom_variable.eval()
Fermer une session session.close()
Sรฉance par bloc avec tf.Session() comme session :

Rรฉsumez cet article avec :