tensorflow 实现线性回归
首先我们构造数据
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import random
n_samples =100
X = np.linspace(-3,3,n_samples)
Y = np.sin(X) + np.random.uniform(0,1,n_samples)
显示下数据:
开始构建线性模型
w = tf.Variable(tf.random_normal([1]),name='w')
b = tf.Variable(tf.random_normal([1]),name='b')
xs = tf.placeholder(tf.float32, name='X')
ys = tf.placeholder(tf.float32, name='Y')
y_pred = tf.add(tf.multiply(xs, w), b)
loss = tf.square(y_pred-ys,name='loss')
lr = 0.1
epochs = 100
optimizer = tf.train.GradientDescentOptimizer(lr).minimize(loss)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
writer = tf.summary.FileWriter('./graphs/linear_reg', sess.graph)
for epoch in range(epochs):
total_loss = 0
for x, y in zip(X, Y):
_, tmp_loss= sess.run([optimizer, loss], feed_dict={xs: x, ys: y})
total_loss += tmp_loss
if epoch%10 == 0:
print('Epoch {}:total_loss = {}'.format(epoch, total_loss/n_samples))
writer.close()
w, b = sess.run([w, b])
显示最终的结果:
运行过程:
打开tensorboard查看: