tensorflow线性函数测试训练

使用tensorflow进行计算与训练的核心步骤

1.准备数据
2.构建模型
3.进行训练
4.进行预测

人工数据的生成

# 在jupyter中,使用matplotlib显示图像设置为inline模式,否则不会显示图像
%matplotlib inline

import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf

#设置随机因子
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.
#画出随机生成数据的散点图
plt.scatter(x_data,y_data)
#画出我们要学习到的线性函数y=2x+1
plt.plot(x_data,2*x_data+1.0,color='red',linewidth=3

在这里插入图片描述

构建模型

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

#定义模型函数
def model(x,w,b):
    return tf.multiply(x,w)+b
#定义模型结构
#构建函数的斜率,变量保存更新参数
#变量的初始值可以是随机数、常数、或者是通过其他变量的初始值计算得到
w = tf.Variable(1.0,name="w0")
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)
# 迭代训练
#采用SGD随机梯度下降优化方法
for epoch in range(train_epochs):
    for xs,ys in zip(x_data,y_data):
        _,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)

在这里插入图片描述

结果查看

print("W: ",sess.run(w))
print("b: ",sess.run(b))
#数据的可视化
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='g',linewidth=3)
plt.legend(loc=2)

在这里插入图片描述

利用模型进行预测

x_test = 3.2
predict = sess.run(pred,feed_dict={x: x_test})
print("预测值:%f" % predict)
target  = 2 * x_test +1.0
print("目标值:%f" % target)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值