博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度学习入门笔记之——基于 tensorflow 的回归代码实现
阅读量:5873 次
发布时间:2019-06-19

本文共 989 字,大约阅读时间需要 3 分钟。

深度学习入门笔记系列 ( 四 )

基于 tensorflow 的回归代码实现

每周一三五 ,相约 7 :35 。

本系列将分为 8 篇 。今天是第四篇 。总是理论有些枯燥 ,今天来动手基于 TF 框架实现两个简单的案例 ,以小搏大熟悉一下整个过程 。整体来说 ,训练神经网络分为 3 个步骤 :

  1. 定义神经网络的结构和前向传播的输出结果

  2. 定义损失函数以及选择反向传播优化的算法

  3. 生成会话(tf.Session) 并在训练数据上反复运行反向传播优化算法

现以直线拟合和回归拟合两个简单案例来熟悉以上 3 个步骤 。

1.直线的拟合

比如我们现在要用 y = k * x + b (其中 k ,b为参数)通过多次的训练来拟合直线 y = 5 * x + 1 。

根据上述 3 个步骤 ,首先构造线性模型 y = k * x + b ,我们目的就是通过训练 ,使得参数 k ,b 去逼近真实值 5 ,1 。之后定义损失函数 ,这里我们用的是二次代价函数 ;选用梯度下降法进行优化 。最后在会话(tf.Session)中进行反复的优化 。具体代码和注释如下 :

运行结果如下 ,经过 100 轮的训练优化 ,参数的训练值已经很逼近真实值了 。

2.线性回归

回归问题和分类问题不太一样 ,分类是得到结果为 label ,表示类别 ,比如二分类问题等 ,是离散的 ,有限个类别 。回归则是连续的 ,具体看下面例子 。

本例中 ,我们用 y = x*x +noise 随机生成200个散点 ,用神经网络训练 ,拟合出较为理想的回归结果 。

同上述 3 个步骤 ,第一步是定义网络结构和基本信息 ,这部分代码造了一个 10 个节点的中间层 ,之后直接连接一个节点的输出 。输入散点则是利用 numpy 在区间(-0.5,0.5)间生成 200 个散点 ,并在输出中添加了 noise 信息 。具体如下。

这里选用的代价函数为二次代价函数 ,优化算法也是梯度下降法 。之后执行对应的训练 ,并将结果以绘图形式输出 。代码如下 :

运行该代码 ,得到的结果如下 。

本篇两个案例都比较简单 ,主要目的在于用两个简单实例熟悉神将网络训练的基本步骤 。最后 ,如果觉得这个系列不错 ,记得扫码关注噢 !

往期推荐:

1.

2.

3. 

                                         欢迎您的转发分享

                             

                                            ▲扫码关注我们

                                      个人微信:python_jiang

转载地址:http://svhnx.baihongyu.com/

你可能感兴趣的文章
2018杭电多校第二场1006(容斥原理,组合数学)
查看>>
JavaScript简介及基础知识(1)
查看>>
用Python实现数据结构之队列
查看>>
单问号和双问号
查看>>
利用用户级线程提高多线程应用的性能
查看>>
javascript捕获事件event
查看>>
比赛总结——atcoder beginner contest 109
查看>>
通过递归遍历n位2进制数的所有情况
查看>>
后台取值页面显示——Vue.js
查看>>
Linux各发行版本 优缺点 简介
查看>>
零基础掌握区块链关键概念
查看>>
仿QQ锁屏界面消息提示
查看>>
LWIP network interface 即 LWIP 的 硬件 数据 接口 移植 详解 STM32 以太网数据 到达 的第二站: void ethernetif_input(...
查看>>
jQuery实现轮播图--入门
查看>>
Visual Studio常用快捷键
查看>>
关于单点登录的简单原理和实现步骤
查看>>
让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求--转载
查看>>
【C++】CCFCSP201803-1跳一跳
查看>>
在CentOS下为sqlplus和rman 添加rlwrap
查看>>
jenkins的使用
查看>>