Líneas rectas ajustadas a Tensorflow

1. Introducción

Tensorflow otorga gran importancia a la estructura. Tenemos que construir la estructura de la red neuronal antes de que podamos ponerle los números y ejecutar esta estructura.

2. Importe el módulo y cree datos

Primero, necesitamos cargar dos módulos, tensorflow y numpy, y usar numpy para crear nuestros datos.

import tensorflow as tf
import numpy as np

x_data = np.random.rand(100).astype(np.float32)    #随机样本位于[0, 1)中
y_data = x_data*0.5 + 2

3. Construye el modelo

Usamos tf.Variable para crear parámetros que describan y. Podemos imaginar y_data = x_data * 0.1 + 0.3 como y = Weights * x + sesgos, y luego la red neuronal está aprendiendo a cambiar los pesos a 0.1 y los sesgos a 0.3.

Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))   #返回一维数组,产生于low和high之间,产生的值是均匀分布的 #tf.Variable()用于生成一个初始值为initial-value的变量;必须指定初始化值
biases = tf.Variable(tf.zeros([1]))  
y = Weights*x_data + biases

4. Calcule el error y la transmisión inversa del error.

El siguiente es calcular el error de y e y_data. El trabajo de transferir el error de vuelta se enseña al optimizador. El método de transferencia de error que usamos es el método de descenso de gradiente: Descenso de gradiente Usemos el optimizador para actualizar los parámetros.

loss = tf.reduce_mean(tf.square(y-y_data))   #tf.reduce_mean用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

5. Entrena al modelo

Acabamos de construir la estructura de la red neuronal y no hemos usado esta estructura. Antes de usar esta estructura, primero debemos inicializar todas las Variables definidas previamente, por lo que este paso es muy importante

init = tf.global_variables_initializer()  #返回一个用来初始化计算图中所有global variable的op

Luego, creamos una Sesión de Sesión. Usamos Sesión para realizar el paso de inicialización de inicio. Y, usamos Sesión para ejecutar cada dato de entrenamiento. Mejore gradualmente la precisión de predicción de la red neuronal.

sess = tf.Session()    #创建一个会话
sess.run(init)   #用 Session 来执行 init 初始化

for step in range(301):   #定义300次迭代
    sess.run(train)
    if step%20 == 0:    #每隔20次打印一次权重和偏置
        print(step, sess.run(Weights),sess.run(biases))

Inserte la descripción de la imagen aquí
Se puede ver que el peso final y el desplazamiento están muy cerca del peso y el desplazamiento de y_data = x_data * 0.5 + 2.

227 artículos originales publicados · elogiados 633 · 30,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/weixin_37763870/article/details/105479139
Recomendado
Clasificación