Comprender los pasos básicos del desarrollo de Tensorflow

Comprender los pasos básicos del desarrollo de Tensorflow

1. Definir el nodo de entrada de Tensorflow

Cómo definir el nodo de entrada

  1. Definido por marcadores de posición (generalmente)
  2. Definido por el tipo de diccionario (usado en el caso de más entrada)
  3. Definición directa (rara vez se usa)

1. Definir por marcador de posición (generalmente)

Por ejemplo, en el ajuste aproximado de y = 2x, los marcadores de posición se utilizan para definir los nodos de entrada

X = tf.placeholder("float")
Y = tf.placeholder("float")

2. Definido por el tipo de diccionario (usado en el caso de más entrada)

Similar al primero

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

3. Definición directa (rara vez se usa)

Coloque las variables de Python definidas directamente en el nodo OP para participar en la operación de entrada y coloque las variables de datos simuladas directamente en el modelo para el entrenamiento.

#生成模拟数据
train_X =np.float32( np.linspace(-1, 1, 100))
train_Y = 2 * train_X + np.random.randn(*train_X.shape) * 0.3 # y=2x,但是加入了噪声
#图形显示
plt.plot(train_X, train_Y, 'ro', label='Original data')
plt.legend()
plt.show()

# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.zeros([1]), name="bias")
# 前向结构
z = tf.multiply(W, train_X)+ b

2. Defina la variable "parámetro de aprendizaje"

Definición directa

W = tf.Variable(tf.random_normal([1]), name = "weigth")
b = tf.Variable(tf.zeros([1]), name = "bias")

Definición del diccionario

# 模型参数
paradict = {
    
    
    'w' = tf.Variable(tf.random_normal([1]), name = "weigth"),
    'b' = tf.Variable(tf.zeros([1]), name = "bias")
}
# 向前结构
z = tf.multipply(X, paradict['w']) + paradict['b']

3. Defina "Operación"

Modelo de propagación hacia adelante

  • Red neuronal de una sola capa
  • Red neuronal multicapa
  • Red neuronal convolucional
  • Red neuronal recurrente
  • GoogLeNet
  • Resnet

Definir función de pérdida

Se utiliza principalmente para calcular el error entre "valor de salida" y "valor objetivo", se utiliza con propagación hacia atrás
(debe ser factible)

El marco de Tensorflow está listo para nosotros

4. Optimizar la función, optimizar el objetivo

5. Inicialice todas las variables

# 初始化变量
init = tf.global_variables_initializer()
# 这步必须在所有变量和OP定义完成之后,这样才能保证定义内容的有效性,否则无法使用session中的run来进行算值

# 启动session
with tf.Session() as sess:
    sess.run(init)

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, el uso común es utilizar la sintaxis with, que se puede cerrar una vez finalizada la sesión.

with tf Session() as sess:
     sess.run(init)
     
     for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={
    
    X: x, Y: y})

Utilice el concepto de MINIBATCH para el entrenamiento iterativo (cada vez que se toma una cierta cantidad de datos y se coloca en la red para el entrenamiento)

7. Prueba el modelo

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

# print ("cost:",cost.eval({X: train_X, Y: train_Y}))

8. Usa el modelo

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

Supongo que te gusta

Origin blog.csdn.net/qq_44082148/article/details/102991528
Recomendado
Clasificación