Tensorflow &&python实战--用梯度下降的优化方法来快速解决线性回归问题
环境准备:
操作系统:Linux,语言:python,框架:TensorFlow,编辑器:vim。
在Linux系统下进入python,TensorFlow环境,命令如下:
再用vim编辑器生成和编辑python文件:按下回车键将会自动进入vim编辑中
引入我们所需要的包,字符集,我们即将开始编程:
1 数据的构建:
我们为什么要构建数据呢?因为在现实生活中,我们收集的数据是随机的,所以我们通过电脑随机生成数据,来模拟我们从生活中获得的数据。来我们先看命令:
points_num是值位100的一个整形常量,代表我们的样本的点为100个
vectors=[ ]表示创建一个空的list,注意这个list中的元素可以是一维张量。
接下来是一个for循环,我们注意到有xrang函数,和rang函数的效果一样,但是内在有不同:
>>>xrange(8)
xrange(8)
>>> list(xrange(8))
[0, 1, 2, 3, 4, 5, 6, 7]
>>> range(8)
# range 使用[0, 1, 2, 3, 4, 5, 6, 7]
我们可以观察到,rang和xrang生成一个顺序数列
rang(x,y,z)包含重载(意思是函数可以传1个,或者2个参数,等等),这里的x:开始数字,y:结尾数字。z:步长。
包含开始数字,而不包含结尾数字。
np.random.normal(x,y):
numpy中
- numpy.random.normal(loc=0.0, scale=1.0, size=None)
loc:float
概率分布的均值,对应着整个分布的中心center
scale:float
概率分布的标准差,对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高
size:int or tuple of ints
输出的shape,默认为None,只输出一个值
我们更经常会用到np.random.randn(size)所谓标准正太分布(μ=0, σ=1),对应于np.random.normal(loc=0, scale=1, size)
2 画出创建的数据:
这有详细的绘图指南:https://www.cnblogs.com/webary/p/5813855.html
plt.legend():
是让图例生效
3 构造回归模型:
这是tf.variable的具体用法:http://blog.****.net/uestc_c2_403/article/details/72328296
- import tensorflow as tf;
- import numpy as np;
- import matplotlib.pyplot as plt;
- a1 = tf.Variable(tf.random_normal(shape=[2,3], mean=0, stddev=1), name='a1')
- a2 = tf.Variable(tf.constant(1), name='a2')
- a3 = tf.Variable(tf.ones(shape=[2,3]), name='a3')
- with tf.Session() as sess:
- sess.run(tf.initialize_all_variables())
- print sess.run(a1)
- print sess.run(a2)
- print sess.run(a3)
[[ 0.76599932 0.99722123 -0.89361787]
[ 0.19991693 -0.16539733 2.16605783]]
1
[[ 1. 1. 1.]
[ 1. 1. 1.]]
tf.random_uniform:
tf.reduce_mean():
tf.train.GradientDescentOptimizer(learingRate).minimize(loss):
4 咱们开始训练!
5 绘制所有的点和最佳的你和曲线。
注意里边用到的参数只要是用tf构造的,记得要run 一 run.