TensorFlow--线性回归问题初步

主要学习了使用TensorFlow深度学习系统如何进行训练数据以及预测数据:session

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
#导入对应的第三方库
'''
线性回归实战:TensorFlow

'''
#设置随机种子
np.random.seed(5)


#直接采用np生成等差数列的方法,生成100个点,每一个点的取值在-1~1之间

#第一步:准备数据
x_data = np.linspace(-1,1,100)

# y = 2x+1+噪声 ,其中,噪声的维度与x_data一致

y_data = 2 * x_data + 1.0 + np.random.randn(*x_data.shape) * 0.4


#画出随机生成数据的散点图
plt.scatter(x_data,y_data)
plt.show()

#画出咱们想要学习到的线性函数y = 2x+1

plt.plot(x_data,2 * x_data + 1.0, color = 'red',linewidth = 3)

#显示数据集的分布
#plt.show()


#第二步:构建模型

#定义训练数据的占位符,x是特征值,y是标签值
x = tf.placeholder("float",name = "x")
y = tf.placeholder("float",name = "y")

#定义模型函数  w和b是模型真正的参数
def model(x,w,b):
    return tf.multiply(x,w) + b  #返回wx +b

#定义模型机构  TensorFlow的变量用来更新参数
'''
TensorFlow变量的声明函数是tf.Variable
tf.Variable的做用是保存和更新参数
变量的初始值能够是随机数、常数,或是经过其余变量的初始值计算获得
'''

#构建线性函数的斜率,变量w
w = tf.Variable(1.0,name="w0")

#构建线性函数的截距,变量b
b = tf.Variable(0.0,name="b0")

#pred是预测值,前向计算
pred = model(x,w,b)


#第三步:训练模型
#设置训练参数

#迭代次数
train_epochs = 10

#学习率
learning_rate = 0.05

#定义损失函数
#采用均方差做为损失函数
loss_function = tf.reduce_mean(tf.square(y-pred))

#选择迭代器
#梯度降低优化器
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)


#声明会话
sess = tf.Session()


#变量初始化
init = tf.global_variables_initializer()
sess.run(init)


#执行训练
#开始训练,轮数为epoch,采用SGD随机梯度降低优化方法
for epoch in range(train_epochs):
    for xs,ys in zip(x_data,y_data): #训练100次
        _,loss = sess.run([optimizer,loss_function],feed_dict={x:xs,y:ys})
    b0temp = b.eval(session = sess)
    w0temp = w.eval(session = sess)
    plt.plot(x_data,w0temp * x_data + b0temp)#画图
plt.show()

print("w:",sess.run(w))#w的值应该在2附近
print("b:",sess.run(b))#w的值应该在1附近


#第四步:进行预测
plt.scatter(x_data,y_data,label = 'Original data')
plt.plot(x_data,x_data * sess.run(w) + sess.run(b),label = 'Fitted line',color='r',linewidth = 3)
plt.legend(loc = 2) #经过参数loc指定图例位置
plt.show()


x_test = 3.21

predict = sess.run(pred,feed_dict={x:x_test})
print("预测值:%f" % predict)

target = 2 * x_test + 1.0
print("目标值:%f" % target)

 

输出结果:dom

 

这个阶段:须要本身进行消化,多敲几遍这个代码,理解整个过程,为后期的学习打好坚实的基础。函数

相关文章
相关标签/搜索