使用TensorFlow实现简单线性回归模型


Posted in Python onJuly 19, 2019

本文使用TensorFlow实现最简单的线性回归模型,供大家参考,具体内容如下

线性拟合y=2.7x+0.6,代码如下:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
 
n = 201 # x点数
X = np.linspace(-1, 1, n)[:,np.newaxis] # 等差数列构建X,[:,np.newaxis]这个是shape,这一行构建了一个n维列向量([1,n]的矩阵)
noise = np.random.normal(0, 0.5, X.shape) # 噪声值,与X同型
Y = X*2.7 + 0.6 + noise # Y
 
xs = tf.placeholder(tf.float32, [None, 1]) # 下面两行是占位符tf.placeholder(dtype, shape)
ys = tf.placeholder(tf.float32, [None, 1])
 
w = tf.Variable(1.1) # 这两行是weight变量,bias变量,括号中是初始值
b = tf.Variable(0.2)
 
ypredict = tf.add(w*xs,b) # 根据 w, b 产生的预测值
 
loss = tf.reduce_sum(tf.pow(ys-ypredict,2.0))/n # 损失函数,tf.reduce_sum()按某一维度元素求和,默认为按列
 
optimizer = tf.train.GradientDescentOptimizer(0.01).minimize(loss) # 梯度下降优化器,0.01学习率,最小化losss
 
init = tf.global_variables_initializer() # 初始化所有变量
 
with tf.Session() as sess: 
 sess.run(init) # 运行初始化 
 for i in range (1000): # 迭代1000次 
  sess.run(optimizer, feed_dict = {xs:X,ys:Y}) # 运行优化器,梯度下降用到loss,计算loss需要xs, ys所以后面需要feed_dict 
  if i%50==0: # 每隔50次迭代输出w,b,loss
     # 下面sess.run(w),sess.run(b)里面没有feed_dict是因为打印w,b不需要xs,ys,而打印loss需要 
     print ("w:",sess.run(w),"\t b:", sess.run(b), "\t loss:", sess.run(loss,feed_dict={xs:X,ys:Y})) 
  
 plt.plot(X,X*sess.run(w)+sess.run(b)) # 运行迭代之后绘制拟合曲线,这需要在sess里面运行是因为要用到w,b 
 plt.scatter(X,Y) # 绘制被拟合数据(散点) 
 plt.show() # 绘制图像

结果:

w: 1.1106868  b: 0.2086223 loss: 1.2682248
w: 1.5626049  b: 0.4772562 loss: 0.7024503
w: 1.8849733  b: 0.57508457 loss: 0.47280872
w: 2.1149294  b: 0.61071056 loss: 0.36368176
w: 2.278966  b: 0.6236845 loss: 0.30917725
w: 2.3959787  b: 0.6284093 loss: 0.2815788
w: 2.4794474  b: 0.6301298 loss: 0.26755357
w: 2.5389886  b: 0.63075644 loss: 0.26041925
w: 2.5814607  b: 0.6309848 loss: 0.2567894
w: 2.611758  b: 0.6310678 loss: 0.25494233
w: 2.6333694  b: 0.6310981 loss: 0.25400248
w: 2.6487865  b: 0.631109  loss: 0.2535242
w: 2.659784  b: 0.63111293 loss: 0.25328085
w: 2.6676288  b: 0.6311139 loss: 0.25315702
w: 2.6732242  b: 0.6311139 loss: 0.25309405
w: 2.6772156  b: 0.6311139 loss: 0.25306198
w: 2.6800632  b: 0.6311139 loss: 0.25304565
w: 2.6820953  b: 0.6311139 loss: 0.25303733
w: 2.6835444  b: 0.6311139 loss: 0.25303313
w: 2.684578  b: 0.6311139 loss: 0.25303096

使用TensorFlow实现简单线性回归模型

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 Python
使用Python的PIL模块来进行图片对比
Feb 18 Python
人生苦短我用python python如何快速入门?
Mar 12 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
python版大富翁源代码分享
Nov 19 Python
python pytest进阶之conftest.py详解
Jun 27 Python
Django框架基础模板标签与filter使用方法详解
Jul 23 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
Python tkinter布局与按钮间距设置方式
Mar 04 Python
tensorflow实现将ckpt转pb文件的方法
Apr 22 Python
python3实现无权最短路径的方法
May 12 Python
总结Pyinstaller打包的高级用法
Jun 28 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 #Python
简单了解django缓存方式及配置
Jul 19 #Python
python实现最小二乘法线性拟合
Jul 19 #Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 #Python
python如何实现数据的线性拟合
Jul 19 #Python
django获取from表单multiple-select的value和id的方法
Jul 19 #Python
django 信号调度机制详解
Jul 19 #Python
You might like
转换中文日期的PHP程序
2006/10/09 PHP
header()函数使用说明
2006/11/23 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
实例说明Python中比较运算符的使用
2015/05/13 Python
Python sys.argv用法实例
2015/05/28 Python
Python 含参构造函数实例详解
2017/05/25 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
Django stark组件使用及原理详解
2019/08/22 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
python try...finally...的实现方法
2020/11/25 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
房地产公司见习自我鉴定
2014/04/28 职场文书
购房委托书
2014/10/15 职场文书
2019年最新借条范本!
2019/07/08 职场文书
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL