Tensorflow 训练拟合y = x*0.1+0.3的参数

 tensorflow就是先创建数据流图,然后往进喂数据。在输入层输入数据,然后数据飞到隐藏层飞到输出层,用梯度下降处理,梯度下降会对几个参数进行更新和完善,更新后的参数再次跑到隐藏层去学习,这样一直循环直到结果收敛。动图如下:

训练过程:

1.输入x,y数据

2.将weight,biases用tensor表示出来

3.求Loss,使用tf.train.GradientDescentOptimizer(0.5).minimize(loss)训练最小化loss

4.初始化变量

import tensorflow as tf
import numpy as np
#输入x,y数据
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1+0.3

#构建线性模型
weight = tf.Variable(tf.random_uniform([1],-1.0,1.0))
biases = tf.Variable(tf.zeros([1]))
y = x_data*weight+ biases
#求loss
loss = tf.reduce_mean(tf.square(y-y_data))
#定义梯度下降来优化,使loss最小
train = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
#初始化变量
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    for step in range(201):
        sess.run(train)
        if step%20 == 0:
           print(step,sess.run(weight),sess.run(biases),sess.run(loss)) 
        

注意点:

在 with tf.Session() as sess:前仅仅是定义了 op的作用,而真正的复制初始化操作是在sess.run(init)进行操作的,sess.run()激活这两个op。

在打印变量的时候也需要sess.run()

 

原文地址:https://www.cnblogs.com/gaona666/p/12612107.html