本代码主要讲述一元线性回归实践干货
1、引入相关模块,%matplotlib inline表示在jupyter显示图表
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
2、生成数据集,x_data,y_data,y_data函数为y=wx+b=3x+1,其中np.random.randn(1000)是随机噪点
x_data = np.random.randn(1000)
y_data = 3*x_data+1+np.random.randn(1000)
3、显示matplot显示产生的散点图及直线图
plt.scatter(x_data,y_data)
plt.plot(x_data,3*x_data+1,linewidth=2,color='red')
4、构建只有一个神经元的神经网络
1、构建超参数,学习轮数,学习率
epoch = 100
learning_rate = 0.005
2、构建占位符
X = tf.placeholder(tf.float32,name="X")
Y = tf.placeholder(tf.float32,name="Y")
3、定义变量
W = tf.Variable(1.0,name="W")
b = tf.Variable(0.0,name="b")
4、定义函数模型,损失函数,优化器
pred = tf.multiply(W,X)+b
loss_function = tf.reduce_mean(tf.pow(Y-pred,2))
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)
5、初始化所有参数
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
6、根据超参数开始学习
for i in range(epoch):
for xs,ys in zip(x_data,y_data):
_,loss_label = sess.run([optimizer,loss_function],feed_dict={X:xs,Y:ys})
7、学习完毕打印学习后的权值,偏置项及最终的学习后的图像与初始定义的图像shi'fou
w = sess.run(W)
b1 = sess.run(b)
print("W=",w)
print("b=",b1)
plt.plot(x_data,w*x_data+b1,color='red',linewidth='2')
plt.plot(x_data,3*x_data+1,linewidth=2,color='blue')
print("Train finished")