Notes d'étude TensorFlow2.0 1.3: Explication de base de la fonction trois

Nous pouvons utiliser la fonction tf.GradientTape () dans la structure with pour réaliser l'opération de dérivation d'une certaine fonction aux paramètres spécifiés.
Insérez la description de l'image ici Avec la fonction variable qui vient d'être mentionnée, nous pouvons réaliser l'opération de dérivation de la perte de fonction de perte au paramètre w

import tensorflow as tf

with tf.GradientTape() as tape:
    w = tf.Variable(tf.constant(3.0))
    loss = tf.pow(w, 2)
grad = tape.gradient(loss, w)
print(grad)

Dans cet exemple, la valeur initiale de w est 3,0, la fonction de perte est le carré de w, la dérivée de la fonction de perte de w est 2w et la valeur initiale w = 3,0 est introduite dans le résultat est 6,0
Insérez la description de l'image ici
énumération signifie énumération, il peut être énuméré Out chaque élément, et correspondre au numéro d'index correspondant devant l'élément, combiné en un élément d'index, souvent utilisé dans une boucle for
Insérez la description de l'image ici

seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
    print(i, element)

Dans cet exemple, énumérer est le nom de la liste entre parenthèses, i accepte le numéro d'index et l'élément accepte l'élément. Le
Insérez la description de l'image ici
numéro d'index 0 correspond à la chaîne un Le
numéro d'index 1 correspond à la chaîne deux Le
numéro d'index 2 correspond à la chaîne trois

Dans le problème de classification, nous utilisons souvent des codes uniques pour représenter les étiquettes . Par exemple, dans la classification précédente de l'iris, si l'étiquette est 1, cela signifie que le résultat de la classification est un iris panaché et qu'il est de 0 1 0 sous la forme des codes one-hot. Cela peut représenter la probabilité de chaque catégorie, c'est-à-dire que 0% peut être 0 iris Setaria, 100% peut être 0 iris panaché, 0% peut être 2 iris Virginie
Insérez la description de l'image iciTensorFlow fournit la fonction one_hot, vous pouvez changer Les données à convertir sont directement converti en forme de code unique
Insérez la description de l'image ici

import tensorflow as tf

classes = 3
labels = tf.constant([1, 0, 2])  # 输入的元素值最小为0,最大为2
output = tf.one_hot(labels, depth=classes)
print("result of labels1:", output)
print("\n")

Par exemple, il y a 3 catégories, un ensemble d'étiquettes est 1, 0 et 2, pour les convertir en codes one-hot, utilisez la fonction tf.one_hot, la première variable écrit les étiquettes de données à convertir, et la seconde variable écrit plusieurs catégories. Attribuez une valeur de 3 catégories et convertissez l'étiquette 1 étiquette 0 étiquette 2 en un code unique, le résultat est 010, 100, 001

Pour le problème de classification, le réseau neuronal achève la propagation directe et calcule la probabilité de chaque type de 1,01, 2,01, -0,66. Ces nombres ne peuvent être comparés à l'étiquette de code unique qu'une fois qu'ils sont conformes à la distribution de probabilité.
Insérez la description de l'image ici
Nous utilisons donc cette formule pour rendre la sortie conforme à la distribution de probabilité.
Insérez la description de l'image ici0,256 signifie que la probabilité d'un iris de classe 0 est de 25,6%.
0,695 signifie que la probabilité d'iris de classe 1 est de 69,5%.
0,048 signifie 2 La probabilité de type iris est de 4,8%
. La fonction softmax est utilisée dans TensorFlow. Le calcul de cette formule
Insérez la description de l'image icipeut faire les n sorties y0, y1 ..., yn-1 de n catégories sont conformes à la distribution de probabilité, c'est-à-dire que chaque valeur de sortie devient 0 à des valeurs de probabilité comprises entre 1, et la somme de ces probabilités est 1

Insérez la description de l'image ici

import tensorflow as tf

y = tf.constant([1.01, 2.01, -0.66])
y_pro = tf.nn.softmax(y)

print("After softmax, y_pro is:", y_pro)  # y_pro 符合概率分布

print("The sum of y_pro:", tf.reduce_sum(y_pro))  # 通过softmax后,所有概率加起来和为1

Dans l'exemple que nous donnons, les résultats de propagation directe du réseau neuronal 1.01, 2.01, -0.66 forment un tenseur y et l'envoient à la fonction softmax. Le résultat est ces valeurs qui sont conformes à la distribution de probabilité. La fonction
Insérez la description de l'image ici
assign_sub () est souvent utilisé pour la mise à jour automatique des paramètres, en attente Le paramètre d'auto-mise à jour w doit d'abord être désigné comme une formation pouvant être mise à jour, c'est-à-dire un type de variable, avant que la mise à jour automatique puisse être implémentée. Par
Insérez la description de l'image ici exemple, dans cet exemple, w doit d'abord être défini comme un type de variable et la valeur initiale est 4. Pour décrémenter w, vous pouvez utiliser la fonction w.assign_sub (). La valeur entre () est 1, ce qui réalise l'opération de w = w-1.
Résultat de l' opération :
La valeur initiale 4 de w est décrémentée de 1, et w est mis à jour. Pour 3,
Insérez la description de l'image ici
tf.argmax () peut renvoyer le numéro d'index de la valeur maximale de l'axe d'opération spécifié. Par
Insérez la description de l'image ici exemple, pour ce tenseur bidimensionnel argmax, axis = 0, le numéro d'index de la valeur maximale verticale est renvoyé , respectivement,
1 2 5 8 et la valeur maximale est 8., Son numéro d'index est 3
2 3 4 7, la valeur maximale est 7, son numéro d'index est 3
3 4 3 2, la valeur maximale est 4, son numéro d'index est 1
argmax, axis = 1, il renvoie le numéro d'index horizontal maximum, respectivement
1 2 3, la valeur maximum est 3, son numéro d'index est 2
2 3 4, la valeur maximum est 4, son numéro d'index est 2
5 4 3 , la valeur maximale est 5 et son numéro d'index est 0
8 7 2, la valeur maximale est 8 et son numéro d'index est 0

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44145452/article/details/112919632
conseillé
Classement