TensorFlow实现线性回归

部署运行你感兴趣的模型镜像
  • 转载请注明出处:http://blog.youkuaiyun.com/gamer_gyt
  • 博主微博:http://weibo.com/234654758
  • Github:https://github.com/thinkgamer

TensorFlow写简单的代码是大财小用,需要很繁琐的代码方能实现简单的功能,但对于复杂的机器学习算法和深度神经网络却是十分的简单,下边看一个tf实现线性回归的Demo

首先引入tf包的相关的package,并初始化100个点。这里我们假定线性回归中的w为0.1 b为0.3,并设置一个随机数保证在y=0.1X + 0.3 上下浮动。

# coding: utf-8
'''
create by: Thinkgamer
create time: 2018/04/22
desc: 使用tensorflow创建线性回归模型
'''
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

# 随机生成100个点
num_points = 100
vectors_set = list()
for i in range(num_points):
    x1 = np.random.normal(0.00,00.55)
    y1 = x1* 0.1 + 0.3 + np.random.normal(0.0,0.03)
    vectors_set.append([x1,y1])

# 生成一些样本
x_data = [v[0] for v in vectors_set]
y_data = [v[1] for v in vectors_set]
# print(x_data)
# print(y_data)
plt.scatter(x_data,y_data,c='r')
plt.show()

生成的图如下所示:
这里写图片描述

用刚才生成的数据进行线性回归拟合

# 构造线性回归模型

# 生成一维的W矩阵,取值是[-1,1]之间的随机数
W = tf.Variable(tf.random_uniform([1],-1,1),name='W')
# 生成一维的b矩阵,初始值为0
b = tf.Variable(tf.zeros([1]),name='b')
# 经过计算得出预估值y
y=W*x_data + b

# 定义损失函数,以预估值y和y_data之间的均方误差作为损失
loss = tf.reduce_mean(tf.square(y - y_data),name='loss')
# 采用地图下降算法来优化参数
optimizer = tf.train.GradientDescentOptimizer(0.5)
# 训练过程就是最小化误差
train = optimizer.minimize(loss,name='train')

sess = tf.Session()

init = tf.global_variables_initializer()
sess.run(init)

# 初始化W 和 b
print("初始化值:  W = ",sess.run(W), "b= ",sess.run(b))
for step in range(20):
    sess.run(train)
    # 打印出每次训练后的w和b
    print("第 %s 步:  W = " % step,sess.run(W), "b= ",sess.run(b))
    
# 展示
plt.scatter(x_data,y_data,c='r')
plt.plot(x_data,sess.run(W)*x_data+sess.run(b),c='b')
plt.show()

对应的输出结果为:

初始化值:  W =  [-0.300848] b=  [0.]
第 0 步:  W =  [-0.17744449] b=  [0.3065566]
第 1 步:  W =  [-0.09421768] b=  [0.30550653]
第 2 步:  W =  [-0.03631891] b=  [0.3047983]
第 3 步:  W =  [0.0039596] b=  [0.3043056]
第 4 步:  W =  [0.0319802] b=  [0.3039629]
第 5 步:  W =  [0.05147332] b=  [0.30372444]
第 6 步:  W =  [0.06503413] b=  [0.30355856]
第 7 步:  W =  [0.07446799] b=  [0.30344316]
第 8 步:  W =  [0.08103085] b=  [0.30336288]
第 9 步:  W =  [0.08559645] b=  [0.30330706]
第 10 步:  W =  [0.0887726] b=  [0.3032682]
第 11 步:  W =  [0.09098216] b=  [0.30324116]
第 12 步:  W =  [0.09251929] b=  [0.30322236]
第 13 步:  W =  [0.09358863] b=  [0.30320928]
第 14 步:  W =  [0.09433253] b=  [0.3032002]
第 15 步:  W =  [0.09485004] b=  [0.30319384]
第 16 步:  W =  [0.09521006] b=  [0.30318946]
第 17 步:  W =  [0.09546052] b=  [0.3031864]
第 18 步:  W =  [0.09563475] b=  [0.30318424]
第 19 步:  W =  [0.09575596] b=  [0.30318278]

生成的图如下:
这里写图片描述


【技术服务】,详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg

扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!


您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值