Podemos usar la función tf.GradientTape () en la estructura with para realizar la operación de derivación de una determinada función a los parámetros especificados.
Con la función variable que acabamos de mencionar, podemos realizar la operación de derivación de la función de pérdida pérdida al parámetro 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)
En este ejemplo, el valor inicial de w es 3.0, la función de pérdida es el cuadrado de w, la derivada de la función de pérdida av es 2w, y el valor inicial w = 3.0 se lleva al resultado es 6.0
enumerar significa enumeración, se puede enumerar en cada elemento y hacer coincidir el número de índice correspondiente delante del elemento, combinado en un elemento de índice, a menudo utilizado en un bucle for
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
print(i, element)
En este ejemplo, enumerar es el nombre de la lista entre paréntesis, i acepta el número de índice y el elemento acepta el elemento. El
número de índice 0 corresponde a la cadena uno El
número de índice 1 corresponde a la cadena dos El
número de índice 2 corresponde a la cadena tres
En el problema de clasificación, a menudo usamos códigos one-hot para representar etiquetas . Por ejemplo, en la clasificación de iris anterior, si la etiqueta es 1, significa que el resultado de la clasificación es iris abigarrado y es 0 1 0 en la forma de códigos one-hot. Esto puede representar la probabilidad de cada categoría, es decir, 0% puede ser 0 iris Setaria, 100% puede ser 0 iris abigarrado, 0% puede ser 2 Virginia iris
TensorFlow proporciona la función one_hot, puede cambiar Los datos que se convertirán son convertido directamente en formato de código único
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")
Por ejemplo, hay 3 categorías, un conjunto de etiquetas es 1, 0 y 2, para convertirlas en códigos one-hot, use la función tf.one_hot, la primera variable escribe las etiquetas de datos que se convertirán y la segunda variable escribe varias categorías. Asigne un valor de 3 categorías y convierta la etiqueta 1 etiqueta 0 etiqueta 2 en un código único, el resultado es 010, 100, 001
Para el problema de clasificación, la red neuronal completa la propagación hacia adelante y calcula la probabilidad de cada tipo de 1.01, 2.01, -0.66. Estos números solo se pueden comparar con la etiqueta de código único una vez que se ajustan a la distribución de probabilidad.
Por lo tanto, usamos esta fórmula para hacer que la salida se ajuste a la distribución de probabilidad.
0.256 significa que la probabilidad de iris de clase 0 es 25.6%.
0.695 significa que la probabilidad de iris de clase 1 es 69.5%.
0.048 significa 2 La probabilidad de iris similar es 4.8%
. La función softmax se usa en TensorFlow. El cálculo de esta fórmula
puede hacer que las n salidas y0, y1 ..., yn-1 de n categorías se ajustan a la distribución de probabilidad, es decir, cada valor de salida se convierte en 0 a valores de probabilidad entre 1, y la suma de estas probabilidades es 1
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
En el ejemplo que damos, los resultados de propagación hacia adelante de la red neuronal 1.01, 2.01, -0.66 forman un tensor y, y lo envían a la función softmax. La salida son estos valores que se ajustan a la distribución de probabilidad. La
función assign_sub () se utiliza a menudo para la actualización automática de parámetros, en espera El parámetro de actualización automática w debe designarse primero como un entrenamiento actualizable, es decir, un tipo de variable, antes de que se pueda implementar la actualización automática. Por
ejemplo, en este ejemplo, w debe primero definirse como un tipo de variable, y el valor inicial es 4. Para disminuir w, puede usar la función w.assign_sub (). El valor en () es 1, que realiza la operación de w = w-1.
Resultado de la operación :
El valor inicial 4 de w se reduce en 1, y w se actualiza. Para 3
tf.argmax () puede devolver el número de índice del valor máximo del eje de operación especificado. Por
ejemplo, para este tensor bidimensional argmax, eje = 0, se devuelve el número de índice del valor máximo vertical , respectivamente,
1 2 5 8 y el valor máximo es 8., Su número de índice es 3
2 3 4 7, el valor máximo es 7, su número de índice es 3
3 4 3 2, el valor máximo es 4, su número de índice es 1
argmax, eje = 1, devuelve el número de índice horizontal máximo, respectivamente
1 2 3, el valor máximo es 3, su número de índice es 2
2 3 4, el valor máximo es 4, su número de índice es 2
5 4 3 , el valor máximo es 5 y su número de índice es 0
8 7 2, el valor máximo es 8 y su número de índice es 0