Aprendizaje profundo para principiantes (1) Resumen de los pasos de desarrollo básicos de TensorFlow

A través del blog: Aprendizaje profundo para principiantes (1) Los pasos de desarrollo básicos de TensorFlow preparan datos y compilan modelos (adelante + atrás) y Aprendizaje profundo para principiantes (1) Pasos de desarrollo básicos de TensorFlow, capacitación iterativa e
introducción al modelo .

Los pasos básicos del desarrollo de tensorflow ahora se pueden resumir de la siguiente manera:

  • Definir el nodo de entrada de tensorflow
  • Definir la variable "parámetro de aprendizaje"
  • Definir "operación"
  • Función de optimización
  • Inicializar todas las variables
  • Actualice iterativamente los parámetros a la solución óptima
  • Modelo de prueba
  • Modelo de uso

1. El método para definir los nodos de entrada de tensorflow

Hay varias formas de definir los nodos de entrada en tensorflow:

  • Definido por marcadores de posición: generalmente usa este método
  • Definido por tipo de diccionario: generalmente se usa en el caso de más entrada,
  • Definición directa: rara vez utilizado,

(1) Utilice marcadores de posición para definir instancias de nodos de entrada

En el blog: Beginner Deep Learning (1) Pasos básicos de desarrollo de TensorFlow: preparación de datos y creación de un modelo (avance + retroceso) , los nodos de entrada se definen mediante marcadores de posición:

# X,Y为占位符
X = tf.placeholder("float") # 代表x的输入
Y = tf.placeholder("float") # 代表对应的真实值y

Código completo:

在这里插入代码片

(2) A través del tipo de diccionario para definir la instancia del nodo de entrada

La forma de definir los nodos de entrada por tipo de diccionario es similar a la de los marcadores de posición, pero se apilan juntos.

#占位符
inputdict = {
    
    
    'x':tf.placeholder("float"),
    'y':tf.placeholder("float")
}

(3) Ejemplos de definición directa de nodos de entrada

La definición directa es colocar las variables de Python definidas directamente en el nodo OP para participar en la operación de entrada y colocar las variables de los datos simulados directamente en el modelo para el entrenamiento.

2. Definir las variables de "parámetros de aprendizaje"

La definición de "parámetro de aprendizaje" es muy similar a la definición de entrada, que se divide en dos partes : definición directa y definición de tipo de diccionario .
Dado que hay muchos parámetros en el ejemplo de la red neuronal profunda, generalmente se usa el segundo.

(1) Definir directamente "parámetros de aprendizaje"

# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight") # w初始化为[-1,1]的随机数,形状为一维的数字
b = tf.Variable(tf.zeros([1]), name="bias") # b的初始化是0,形状为一维的数字
# 通过tf.Variable()函数对参数直接定义

(2) Definir "parámetros de aprendizaje" por tipo de diccionario.

# 模型参数
paradict = {
    
    
    'W':tf.Variable(tf.random_normal([1])) # w初始化为[-1,1]的随机数,形状为一维的数字
    'b':tf.Variable(tf.zeros([1])) # b的初始化是0,形状为一维的数字
}

3. Defina "Operación"

El proceso de definición de "operación" es el proceso central de establecimiento del modelo , que determina directamente el efecto de ajuste del modelo .

(1) Definir el modelo de propagación directa

# 创建正向模型
# X,Y为占位符
X = tf.placeholder("float") # 代表x的输入
Y = tf.placeholder("float") # 代表对应的真实值y

# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight") # w初始化为[-1,1]的随机数,形状为一维的数字
b = tf.Variable(tf.zeros([1]), name="bias") # b的初始化是0,形状为一维的数字

# 前向结构
z = tf.multiply(X, W)+ b # x*w+b

Como se muestra arriba (blog: aprendizaje profundo para principiantes (1) Pasos básicos de desarrollo de TensorFlow: preparación de datos y construcción de un modelo (avance + retroceso) ) La estructura de red utilizada es muy simple, con una sola neurona.
Más adelante aprenderás redes cada vez más complejas como: red neuronal multicapa, red neuronal convolucional, red neuronal recurrente, etc. Son todas estructuras de red compuestas por neuronas en diferentes combinaciones.

(2) Defina la función de pérdida

La función de pérdida se utiliza principalmente para calcular el error entre el "valor de salida" y el "valor real", que se utiliza junto con la propagación hacia atrás.
Para encontrar el valor mínimo (correspondiente a la solución óptima) en retropropagación, la función debe ser derivable.

4. Optimizar la función, optimizar el objetivo

Con la estructura directa y la función de pérdida, los parámetros de aprendizaje se optimizan a través de la función de optimización , y este proceso también se completa en retropropagación.

PD:

Proceso de retropropagación: consiste en pasar el error en la dirección opuesta a lo largo de la estructura de propagación hacia adelante .

5. Inicialice todas las variables

Solo hay una línea de código, pero es un enlace muy crítico.
Una vez creada la sesión, lo primero es inicializarla.
Por ejemplo, en el blog: Beginner Deep Learning (1) Modelo iterativo de entrenamiento y uso de los pasos básicos de desarrollo de TensorFlow :

# 初始化变量
init = tf.global_variables_initializer() # global_variables_initializer()函数初始化所有变量

Nota:

Utilice la función tf.global_variables_initializer () para inicializar todas las variables, que deben completarse después de que se definan todas las variables y OP . Solo de esta manera el contenido definido puede ser válido , de lo contrario, las variables y los OP definidos después de la inicialización no se pueden calcular utilizando la ejecución en la sesión.

6. Actualice iterativamente los parámetros a la solución óptima.

En el proceso de entrenamiento iterativo, es necesario establecer una sesión para completar. Por lo general, utiliza la sintaxis with , que se puede cerrar una vez finalizada la sesión.

Por ejemplo, en el blog: Beginner Deep Learning (1) Modelo iterativo de entrenamiento y uso de los pasos básicos de desarrollo de TensorFlow :

with tf.Session() as sess:
    sess.run(init) # 通过sess.进行网络节点的运算
    plotdata = {
    
    "batchsize":[],"loss":[]} # 存放批次值和损失值

Ejecute los nodos en el modelo a través de la ejecución en la sesión. Lo mismo ocurre en el proceso de entrenamiento iterativo, excepto que el OP de la operación optimizada se coloca en la ejecución y el número de ciclos debe agregarse a la capa exterior .

Por ejemplo, en el blog: Beginner Deep Learning (1) Modelo iterativo de entrenamiento y uso de los pasos básicos de desarrollo de TensorFlow :

    # 向模型输入数据
    for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={
    
    X: x, Y: y}) # 通过feed机制将真实数据灌到占位符(第二步创建模型时)对应的位置

En el proceso de uso real, se introducirá un concepto llamado MINIBATCH para el entrenamiento iterativo, es decir, cada vez que se toma una cierta cantidad de datos y se coloca en la red para el entrenamiento.

7. Modelo de prueba

El modelo de prueba no es la parte central de la red neuronal, es decir, la precisión o la tasa de error del modelo se calcula para describir la calidad del modelo.

Por ejemplo, en el blog: Beginner Deep Learning (1) Modelo iterativo de entrenamiento y uso de los pasos básicos de desarrollo de TensorFlow :

    print ("cost=", sess.run(cost, feed_dict={
    
    X: train_X, Y: train_Y}), "W=", sess.run(W), "b=", sess.run(b))

8. Usa el modelo

El modelo de uso es similar al modelo de prueba, es decir, el nodo de valor de pérdida se puede reemplazar con un nodo de salida.

Por ejemplo, en el blog: Beginner Deep Learning (1) Modelo iterativo de entrenamiento y uso de los pasos básicos de desarrollo de TensorFlow :

print ("x=0.2,z=", sess.run(z, feed_dict={
    
    X: 0.2}))

Supongo que te gusta

Origin blog.csdn.net/qq_45154565/article/details/109854289
Recomendado
Clasificación