首页 > 代码库 > TensorFlow——热身运动:简单的线性回归

TensorFlow——热身运动:简单的线性回归

过程:

先用numpy建立100个数据点,再用梯度下滑工具来拟合,得到完美的回归线。

 1 # _*_coding:utf-8_*_
 2 import tensorflow as tf
 3 import numpy as np
 4 
 5 # 用numpy建立100个数据点,y=x*0.1+0.3
 6 x_data = http://www.mamicode.com/np.random.rand(100).astype("float32")
 7 y_data = http://www.mamicode.com/x_data*0.1+0.3"color: #008080"> 8 
 9 # 建立权值变量W和偏移量变量b
10 W = tf.Variable(tf.random_uniform([1],-1.0,1.0))
11 b = tf.Variable(tf.zeros([1]))
12 y = W * x_data + b
13 
14 # 最小化均方差
15 loss = tf.reduce_mean(tf.square(y - y_data))
16 optimizer = tf.train.GradientDescentOptimizer(0.5)  #train里面有最优化函数
17 train = optimizer.minimize(loss)    #gradient descent 作用的是代价函数
18 
19 # 变量使用前要初始化
20 init = tf.initialize_all_variables()
21 
22 # 载入图(在一个session被建立并且run()函数被运行前,TensorFlow不会进行任何实质的计算)
23 sess = tf.Session()     # 会话将图的 op 分发到如 CPU 或 GPU 之类的 设备 (Devices()) 上, 同时提供 执行 op 的方法
24 sess.run(init)
25 
26 # 调整线
27 for step in xrange(201):
28     sess.run(train)
29     if step % 20 == 0:
30         print (step, sess.run(W), sess.run(b))

 

运行结果:

(0, array([ 0.32897317], dtype=float32), array([ 0.2412499], dtype=float32))
(20, array([ 0.15775403], dtype=float32), array([ 0.26956022], dtype=float32))
(40, array([ 0.11639664], dtype=float32), array([ 0.29135802], dtype=float32))
(60, array([ 0.1046551], dtype=float32), array([ 0.29754651], dtype=float32))
(80, array([ 0.10132162], dtype=float32), array([ 0.29930344], dtype=float32))
(100, array([ 0.10037522], dtype=float32), array([ 0.29980224], dtype=float32))
(120, array([ 0.10010655], dtype=float32), array([ 0.29994386], dtype=float32))
(140, array([ 0.10003026], dtype=float32), array([ 0.29998407], dtype=float32))
(160, array([ 0.10000858], dtype=float32), array([ 0.29999548], dtype=float32))
(180, array([ 0.10000245], dtype=float32), array([ 0.29999873], dtype=float32))

符合:y=x*0.1+0.3

 

TensorFlow——热身运动:简单的线性回归