Il est préférable d’avoir lu les tutoriels #1, #2 et #3 auparavant.

Ce tutoriel s’appuie sur le Programmer’s Guide Tensors

Un tenseur est un vecteur ou une matrice de dimension quelconque.

Pour TensorFlow (TF) un tenseur est un tableau de n dimensions  arrays.

Tout tf.Tensor a les propriétés suivantes :

  • un type (float32, int32, ou string par exemple)
  • une forme (shape)

Important : tous les éléments d’un tf.Tensor ont le même type.

Rank

Chaque tf.Tensor a un rang.

Le rang d’un tenseur n’est pas celui d’une matrice. C’est le nombre d’indices nécessaire pour accéder à un élément. Par exemple si pour accéder à un élément il faut [i, j, k, l] alors le rang est 4.

Rank Math entity
0 Scalar (magnitude only)
1 Vector (magnitude and direction)
2 Matrix (table of numbers)
3 3-Tensor (cube of numbers)
n n-Tensor (you get the idea)

 

Par exemple :

[code] import tensorflow as tf
sess = tf.Session()

mammal = tf.Variable("Elephant", tf.string)
ignition = tf.Variable(451, tf.int16)
floating = tf.Variable(3.14159265359, tf.float64)
its_complicated = tf.Variable(12.3 – 4.85j, tf.complex64)

print(mammal,ignition,floating,its_complicated)
print(tf.rank(mammal))
print(tf.rank(ignition))
print(tf.rank(floating))
print(tf.rank(its_complicated))
[/code]

Shape

La forme (shape) d’un tenseur est le nombre d’éléments dans chaque dimension.

Rank Shape Dimension number Example
0 [] 0-D A 0-D tensor. A scalar.
1 [D0] 1-D A 1-D tensor with shape [5].
2 [D0, D1] 2-D A 2-D tensor with shape [3, 4].
3 [D0, D1, D2] 3-D A 3-D tensor with shape [1, 4, 3].
n [D0, D1, … Dn-1] n-D A tensor with shape [D0, D1, … Dn-1].

Par exemple :

[code] import tensorflow as tf
sess = tf.Session()

mymat = tf.Variable([[7],[11]], tf.int16)
print (my mat)

[/code]

affiche :

[code] <tf.Variable ‘Variable_349:0’ shape=(2, 1) dtype=int32_ref>
[/code]

Data type

Les tenseurs ont un rank, une shape, et un data type.

Pour rappel, tous les éléments d’un tenseur sont du même type.

[code] import tensorflow as tf
sess = tf.Session()
mymat = tf.Variable([[7],[11]], tf.int16)
zeros = tf.zeros(mymat.shape[1])
print (zeros)
[/code] [code] Tensor("zeros_6:0", shape=(1,), dtype=float32)
[/code]

Il est possible de « caster » les variables.

[code] import tensorflow as tf
sess = tf.Session()

mymat = tf.Variable([[7],[11]], tf.int16)
zeros = tf.zeros(mymat.shape[1])

# Cast a constant integer tensor into floating point.
ct = tf.constant([1, 2, 3])
print (ct)
float_tensor = tf.cast(ct, dtype=tf.float32)
print (float_tensor)
print (float_tensor.shape, float_tensor.dtype)
[/code] [code] Tensor("Const_47:0", shape=(3,), dtype=int32)
Tensor("Cast_4:0", shape=(3,), dtype=float32)
(3,) <dtype: ‘float32’>
[/code]

Evaluation des Tensors

Avec TF nous créons des graphes. Ces graphes doivent être évalués pour fournir des résultats.

[code] import tensorflow as tf
sess = tf.InteractiveSession()
x = tf.Variable(3)
y = tf.Variable(4)
z = x*y
init = tf.global_variables_initializer()
init.run()

result = z.eval()
print(result)

constant = tf.constant([1, 2, 3])
tensor = constant * constant
print (tensor.eval())
[/code]

Le résultat affiché est :

[code] 12
[1 4 9] [/code]

Tout ceci mérite quelques commentaires.
Il faut d’abord impérativement créé une session. Je choisis ici de créer une InteractiveSession car j’utilise Jupyter. Lorsqu’on crée une InteractiveSession elle devient celle par défaut.

Je crée ensuite des variables x = tf.Variable(3) qui ne prennent leur valeur que lorsqu’elles sont initialisées.

Je termine par une évaluation du résultat result = z.eval() et print (tensor.eval())

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *