所谓线性回归模型就是y = W * x + b的形式的表达式拟合的模型。我们如果想通过深度学习拟合一条直线 y = 3 * x 应该怎么做呢?咱不讲虚的先展示下代码!然后我们在逐步分析。
#coding=utf-8
import tensorflow as tfx = tf.placeholder(tf.float32)
W = tf.Variable(tf.zeros([1]))
b = tf.Variable(tf.zeros([1]))
y_ = tf.placeholder(tf.float32)y = W * x + blost = tf.reduce_mean(tf.square(y_-y))
optimizer = tf.train.GradientDescentOptimizer(0.0000001)
train_step = optimizer.minimize(lost)sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)steps = 1000
for i in range(steps):xs = [i]ys = [3 * i]feed = { x: xs, y_: ys }sess.run(train_step, feed_dict=feed)if i % 100 == 0 :print("After %d iteration:" % i)print("W: %f" % sess.run(W))print("b: %f" % sess.run(b))print("lost: %f" % sess.run(lost, feed_dict=feed))1.先导入需要使用的python库。
#coding=utf-8
import tensorflow as tf毕竟是基于TensorFlow的,那我们肯定要导入TensorFlow滴,导入之后取个别名tf,之后用起来方便些。2.定义需要的变量,我们看看y = W * x + b中都有哪些变量。
x = tf.placeholder(tf.float32)
W = tf.Variable(tf.zeros([1]))
b = tf.Variable(tf.zeros([1]))
y_ = tf.placeholder(tf.float32)x:我们训练时需要输入的真实数据x
W: 我们需要训练的W,这里我们定义了一个1维的变量(其实吧,就是一个普普通通的数,直接用tf.float32也行)并将其初值赋为0
b : 我们需要训练的b,定义一个1维变量,并将其初值赋为0
y_ :我们训练时需要输入的x对应的y3.定义线性模型
y = W * x + b4.定义损失函数和优化方法
lost = tf.reduce_mean(tf.square(y_-y))
optimizer = tf.train.GradientDescentOptimizer(0.0000001)
train_step = optimizer.minimize(lost)lost = tf.reducemean(tf.square(y- y))损失函数(Lost Function)是用来评估我们预测的值和真实的值之间的差距是多少,损失函数有很多种写法,
我们这里使用(y预测-y真实)^2再取平均数来作为我们的损失函数(用这个函数是有原因的,因为我们用的是梯度下降法进行学习)
损失函数的值越小越好,有些教程也叫Cost Functionoptimizer = tf.train.GradientDescentOptimizer(0.0000001)优化函数代表我们要通过什么方式去优化我们需要学习的值,这个例子里指的是W和b,优化函数的种类有很多,
大家到官网查阅,平时我们用的比较多的是GradientDescentOptimizer和AdamOptimizer等,
这里我们选用最常用也是最最基本的GradientDescentOptimizer(梯度下降),后面传入的值是学习效率。
一般是一个小于1的数。越小收敛越慢,但并不是越大收敛越快哈,取值太大甚至可能不收敛了。。。我们简单介绍下什么是梯度下降,梯度顾名思义就是函数某一点的导数,也就是该点的变化率。梯度下降则顾名思义就是沿梯度下降的方向求解极小值。详细解释大家可以自行谷歌一下~当然可以可以看这篇文章,当然由于性能的原因梯度下降有很多种变种,
例如随机梯度下降 (Stochastic Gradient Descent),小批梯度下降 (Mini-Batch Gradient Descent)。本文样例采用的是SGD,
每次只输入一个数据。train_step = optimizer.minimize(lost)这个代表我们每次训练迭代的目的,本例我们的目的就是尽量减小lost的值,也就是让损失函数的值尽量变小5.变量初始化
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)这个之前有所介绍了,我们需要在Session中真正运行下global_variables_initializer才会真正初始化变量。6.开始训练
steps = 1000
for i in range(steps):xs = [i]ys = [3 * i]feed = { x: xs, y_: ys }sess.run(train_step, feed_dict=feed)if i % 100 == 0 :print("After %d iteration:" % i)print("W: %f" % sess.run(W))print("b: %f" % sess.run(b))print("lost: %f" % sess.run(lost, feed_dict=feed))我们定义一个训练迭代次数1000次。这里我们图方便,每次迭代都直接将i作为x,3*i作为y直接当成训练数据。我们所有通过placeholder定义的值,在训练时我们都需要通过feed_dict来传入数据。然后我们每隔100次迭代,输出一次训练结果,看看效果如何~
After 0 iteration:
W: 0.000000
b: 0.000000
lost: 0.000000
After 100 iteration:
W: 0.196407
b: 0.002951
lost: 78599.671875
After 200 iteration:
W: 1.249361
b: 0.009867
lost: 122582.625000
After 300 iteration:
W: 2.513344
b: 0.015055
lost: 21310.636719
After 400 iteration:
W: 2.960238
b: 0.016392
lost: 252.449890
After 500 iteration:
W: 2.999347
b: 0.016484
lost: 0.096061
After 600 iteration:
W: 2.999971
b: 0.016485
lost: 0.000001
After 700 iteration:
W: 2.999975
b: 0.016485
lost: 0.000001
After 800 iteration:
W: 2.999978
b: 0.016485
lost: 0.000001
After 900 iteration:
W: 2.999981
b: 0.016485
lost: 0.000000可以看到在迭代了500次之后效果就很好了,w已经达到2.999347很接近3了,b也达到了0.016484也比较接近0了,
因为这里学习率选择的比较小,所以收敛的比较慢,各位也可以尝试调大学习率,看看收敛的速度有何变化。

用TF实现线性回归模型。相关推荐

  1. python多元线性回归模型_python – 使用Tensorflow的多元线性回归模型

    我想通过使用Tensorflow构建一个多元线性回归模型. 一个数据示例:2104,3,399900(前两个是功能,最后一个是房价;我们有47个示例) 代码如下: import numpy as np ...

  2. [tensorflow] 线性回归模型实现

    在这一篇博客中大概讲一下用tensorflow如何实现一个简单的线性回归模型,其中就可能涉及到一些tensorflow的基本概念和操作,然后因为我只是入门了点tensorflow,所以我只能对部分代码 ...

  3. 手把手教你开发人工智能微信小程序(1):线性回归模型

    谈到人工智能.机器学习,我们可能会觉得很神秘,其实机器学习背后的理论并不复杂.就如同原子弹这么尖端的科技,其背后的理论就是一个很简单的公式: E = mc² 机器学习的最基础理论其实也不复杂,本文先尝 ...

  4. tf.saved_model.save模型导出、TensorFlow Serving模型部署、TensorBoard中的HParams 超参数调优

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 4.11 综合案例:模型导出与部署 学习目标 目标 掌握Ten ...

  5. 机器学习10—多元线性回归模型

    多元线性回归模型statsmodelsols 前言 什么是多元线性回归分析预测法 一.多元线性回归 二.多元线性回归模型求解 2.1最小二乘法实现参数估计-估计自变量X的系数 2.2决定系数:R² 与 ...

  6. 回归方程的拟合优度检验_计量经济学第四讲(多元线性回归模型:基本假定,参数估计,统计检验)...

    第三章.经典单方程计量经济学模型:多元线性回归模型 3.1多元线性回归模型及其基本假定 3.1.1多元回归模型及其表示 解释变量至少有两个的线性回归模型,一般形式为 如果不作说明, 是不包括常数项的解 ...

  7. R语言使用lmPerm包应用于线性模型的置换方法(置换检验、permutation tests)、使用lm模型构建简单线性回归模型、使用lmp函数生成置换检验回归分析模型

    R语言使用lmPerm包应用于线性模型的置换方法(置换检验.permutation tests).使用lm模型构建简单线性回归模型.使用lmp函数生成置换检验回归分析模型(Permutation te ...

  8. R语言使用lm函数拟合多元线性回归模型、假定预测变量没有交互作用(Multiple linear regression)

    R语言使用lm函数拟合多元线性回归模型.假定预测变量没有交互作用(Multiple linear regression) 目录

  9. R语言使用pwr包的pwr.f2.test函数对线性回归模型(Linear models)进行效用分析(power analysis)的语法

    R语言使用pwr包的pwr.f2.test函数对线性回归模型(Linear models)进行效用分析(power analysis)的语法 目录

最新文章

  1. 解决mysql“Access denied for user‘root‘@‘IP地址‘“问题
  2. Docker安装Hadoop
  3. linux下几种运行后台任务的方法
  4. 解决eclipse中tomcat无法识别maven web项目问题
  5. Py与Py3的区别之输入input()函数
  6. Linux pwd命令:显示当前路径
  7. Differential Geometry之第九章常平均曲率曲面
  8. 状态管理技术~~Session
  9. Python Mysql学习总结
  10. kubernetes相关命令
  11. java kaptcha_kaptcha Java验证码
  12. 考研英语 - word-list-44
  13. c 抓取百度页面html,搜索引擎百度蜘蛛详解,百度蜘蛛IP分析
  14. 基于yolov5+deepsort的智能售货机商品目标检测种类识别计数
  15. Android 在分享列表添加自己的应用
  16. jquery dataTable 参数详解
  17. linux 编译安装TRMPdump(libRTMP)
  18. 服务器进入安全系统,云服务器怎么进安全模式
  19. 北大邮箱Outlook连接方法
  20. 04.HC_SR04超声波测距

热门文章

  1. 力扣1025.除数博弈
  2. JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) )
  3. 正则表达式30分钟入门教程--deerchao
  4. Spring Boot 笔记汇总
  5. 爬虫基础12(框架Scrapy中间件)
  6. Linux 文件IO管理 - POSIX
  7. Java编程思想 4th 第5章 初始化与清理
  8. Nginx(二) 反向代理负载均衡
  9. Python 实现的下载op海贼王网的图片(网络爬虫)
  10. 原生js获取宽高与jquery获取宽高的方法的关系