深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

最近刷完了莫烦的tensorflow教程,写个文章总结一下,流量警告,本文图多,而且很长。

一、tf.Variable和tensorflow线性回归

通过tf.Variable定义weights和bias,进行简单的线性回归


深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图1

二、tf.constant和session

主要学习通过tf.constant定义常量,tf.matmul将两个tensor相乘,类似于np.dot。还有一点很重要——session,类似于一个指针,可以指向运算,也可以指向变/常量,有两种使用方法,推荐第二种。

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图2

三、tensor初始化

主要学习了参数初始化,在tensorflow中,进行运算前需要将定义的tensor初始化。

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图3

四、tf.placeholder

placeholder有点类似占位符,在sess.run需要传入具体参数时,通过feed_dict,提供一个字典。

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图4

五、激励函数

激励函数的作用是给神经网络提供非线性。有很多函数可以充当激励函数,例如relu、sigmox、tanh,当然,你也可以自己设计激励函数,但是,激励函数必须可微分。一般来说,简单的神经网络可以使用任意激励函数,但是复杂的神经网络必须精心选择激活函数,以避免梯度爆炸或梯度消失现象。

六、添加层

主要学习如何定义一个函数表示添加一层神经网络。


深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图6

七、搭建简单的神经网络

主要学习了如何搭建一个简单的神经网络(一个隐藏层,一个输出层)。


深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图7、神经网络搭建部分

八、可视化神经网络非线性拟合效果

神经网络的搭建部分和上面一样,本节主要学习了如何可视化神经网络的非线性拟合效果。

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图8、训练神经网络并可视化的部分

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图8、神经网络可视化效果图


九、优化器

主流的优化器optimizer分为四种,如图,目前推荐用Adam


深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图9

十、tensorboard

tensorboard是tensorflow的可视化工具,tensorboard主要有四个功能,查看标量(scalers)、图(Graph)、参数分布(Distribution)、参数柱状图(Histograms)。主要学习了如何用代码给网络层和参数命名,然后在Graph中展示。

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图10 tensorboard 功能介绍

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图10 搭建的神经网络在tensorboard的Graph中的展示

十一、分类学习

本节主要学习通过搭建神经网络,完成手写数据集Mnist的分类任务。


深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图11 创建数据集和搭建神经网络

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图11 训练和评估精度

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图11 训练效果还是很不错的,精度能达到0.87

十二、过拟合

对于分类和回归任务,经常会碰到过拟合现象,即神经网络模型在训练或验证集上表现很好,在测试集上表现不如人意。说白了, 就是机器学习模型于自信. 已经到了自负的阶段了.。机器学习模型的自负又表现在哪些方面呢. 这里是一些数据. 如果要你画一条线来描述这些数据, 大多数人都会这么画. 对, 这条线也是我们希望机器也能学出来的一条用来总结这些数据的线. 这时蓝线与数据的总误差可能是10. 可是有时候, 机器过于纠结这误差值, 他想把误差减到更小, 来完成他对这一批数据的学习使命. 所以, 他学到的可能会变成这样 . 它几乎经过了每一个数据点, 这样, 误差值会更小 . 可是误差越小就真的好吗? 看来我们的模型还是太天真了. 当我拿这个模型运用在现实中的时候, 他的自负就体现出来. 小二, 来一打现实数据 . 这时, 之前误差大的蓝线误差基本保持不变 .误差小的 红线误差值突然飙高 , 自负的红线再也骄傲不起来, 因为他不能成功的表达除了训练数据以外的其他数据. 这就叫做过拟合Overfitting

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图12 过拟合现象描述

解决方法:

A、增加数据量。过拟合的原因是模型复杂度和数据量不匹配,也就是数据量太小

B、正则化。WW表示要学习的参数,过拟合中WW往往变化比较大,为了不让WW变化太大,在原始误差集上做些改变,即如果WW变化太大,则让cost的变化也变大。著名的有L1和L2正则化。

C、Dropout。训练神经网络时随机去掉神经网络节点和网络连接,从根本上不让神经网络过度依赖某些神经元。

十三、Dropout缓解over-fitting

本节主要学习了如何在tensorflow搭建神经网络时添加dropout。Dropout要添加在激励函数前。


深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图13、准备二分类数据集

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图13、搭建带有dropout的简单神经网络

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图13、训练和计算精度

我们可以看一下带有dropout和不带dropout的训练效果。其中蓝线是训练损失,橙线是测试损失。

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图13、不带有dropout的训练

深度学习/目标检测之tensorflow——莫烦教程总结(1-13)

图13、带有dropout的训练


分享到:


相關文章: