文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
本文主要是以求解线性回归的参数为例,讲解一下tensorflow的用法。下面的代码中我们自己构建了一个线性回归模型y = 0.1 * x + 0.3
,然后我们使用tensorflow来进行了求解。Demo源码及解释如下:
#!/usr/bin/env python
# _*_ coding: utf-8 _*_
import tensorflow as tf
import numpy as np
# 随机生成100个浮点数
x_data = np.random.rand(100).astype(np.float32)
# y=0.1*x+0.3,这样就构造了训练数据(x_data,y_data)
y_data = x_data * 0.1 + 0.3
# 定义线性回归的权重参数
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
# 定义线性回归的偏置参数
Biases = tf.Variable(tf.zeros([1]))
# 构建线性回归模型
y = Weights * x_data + Biases
# 计算线性回归的损失函数
loss = tf.reduce_mean(tf.square(y - y_data))
# 定义线性回归的求解方法,梯度下降法,学习率为0.5
optimizer = tf.train.GradientDescentOptimizer(0.5)
# 使用tensorflow求解
train = optimizer.minimize(loss)
# 初始化tensorflow的所有变量
init = tf.initialize_all_variables()
# 定义tensorflow的session
sess = tf.Session()
# 将初始化数据放入到session中,执行时会用到
sess.run(init)
# 迭代201次求解线性回归参数
for step in range(201):
# session执行训练
sess.run(train)
if step % 20 == 0:
# 每迭代二十次输出一次结果
print step, sess.run(Weights), sess.run(Biases)
执行结果如下图:
0 [ 0.46898228] [ 0.12989661]
20 [ 0.18490312] [ 0.25323763]
40 [ 0.1203066] [ 0.28881568]
60 [ 0.10485679] [ 0.29732502]
80 [ 0.10116163] [ 0.29936022]
100 [ 0.10027781] [ 0.29984701]
120 [ 0.10006645] [ 0.29996341]
140 [ 0.10001589] [ 0.29999125]
160 [ 0.10000382] [ 0.29999793]
180 [ 0.10000091] [ 0.29999951]
200 [ 0.10000024] [ 0.29999989]
从结果中可以看出,求解的结果还是很准确的。