使用tensorflow 实现线性回归
入门tensorflow还是从简单的线性回归做起:
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
x_data = np.linspace(0,1,101)
y_data = 2 * x_data + np.random.randn(*x_data.shape)*0.1 + 0.2
plt.figure()
plt.scatter(x_data,y_data)
plt.plot(x_data,2 * x_data + 0.2)
# tensorflow
# 定义线性模型
k = tf.Variable(0.)
b = tf.Variable(0.)
y = k * x_data + b
# 定义代价函数
loss = tf.reduce_mean(tf.square(y-y_data))
# 定义使用梯度下降法训练模型的优化器
optimizer = tf.train.GradientDescentOptimizer(0.1)
# 最小化代价函数,训练过程
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
# 启动图 Launch the graph in a session
with tf.Session() as sess:
sess.run(init)
for step in range(500):
sess.run(train)
if step%20 == 0 :
print(step, sess.run([k,b]))
# 在会话中将tensor转化为numpy数组
kval = k.eval(session=sess)
bval = b.eval(session=sess)
print('k:',kval,'b:',bval)
# 显示训练得到的直线
plt.plot(x_data, kval * x_data + bval, 'r--')
总结
线性回归的实现过程还算简单,但是也要注意几个地方,特别是最后得到的参数形式是tensor, 要在会话中把tensor类型转化为numpy下的array类型,最后画出线性回归的图像。