深度学习
从"深度"与"学习"两方面谈
①深度
深度学习前身:人工神经网络(ANN).它的基本特点:模仿人脑神经元传递和处理信息
人工神经网络模型: 输入层----->隐藏层--->输出层. 而"深度"则一般是要求隐藏层很多
每一层由大量节点组成,层层之间由大量链接,但层内神经元一般相互独立
深度学习目的:利用已知的数据学习一套模型,使系统在遇见未知的数据时,也能够做出预测.在这个过程中,神经元需具备以下两个特性:
1,激活函数:非线性函数,前向传播
2,成本函数:在特定输入值下,输出与输入的真实值有多远,降损.反向传播
神经网络算法核心:计算,连接,评估,纠错,训练
深度学习:增加隐藏层数与神经元数量,让系统运行大量数据,训练它
②学习(其实就是进行分类)
有监督学习:有特征,有标记,寻找特征与标记的映射关系(分类,回归)
无监督学习:(思路一:训练时对聚群结构进行聚类;思路二:成功时,强化学习)只有特征没有标记,(聚类,回归)
半监督学习:有标记的跟没有标记的.
入门过程:
1,数学知识:概率论与数理统计,高等数学,线性代数
2.机器学习理论与算法:LR,SVM,决策树,RF
3.编程工具:Python,Java…..
4,研读论文:LeNet,GoogleNet,AlexNetLSTM,GAN
5,动手训练
6,计算机视觉,自然语言处理
TensorFlow
简介
Google框架,实现深度学习中运用的神经网络
亮点:异构设备分布式计算,异构设备指:使用CPU,GPU等核心进行有效协同合作,分布式:帮助我们调度,分配计算资源(甚至容错)
支持的神经网络:卷积神经网络(CNN),循环神经网络(RNN),以及RNN的长短期记忆网络(LSTM)
一个有效框架该有的功能:
·Tensor库对CPU/GPU透明,并且实现很多操作
透明是指:用户只需指定哪个设备进行哪种运算,剩下的都是框架帮用户去实现
·独立的代码库,通过脚本语言(最理想_python)操作tensor,实现所有深度学习内容,包括前向/反向传播,图形计算
·没有编译过程
TensorFlow特性:
·高度灵活性:采用数据流图,用户数值计算
·真正的可移植:在CPU.GPU运行,PC,移动端,服务器,云端服务器等都可以运行
·:科研与产品结合在一起
·自动求微分
·多语言:接口:python,java,c++,核心:C++
·:最优化性能
下载,-----自行Google
依赖的一些模块
1,numpy:存储和处理大型矩阵的科学计算包,包括:
·一个强大的N维数组对象
·比较成熟的函数库
·用于整合C/C++和Fortran代码的工具包
·使用的线性代数,傅里叶变换和随机数生成函数
安装方法: pip install numpy --upgrade
2,matplotlib:python最著名的绘图库
安装方法:pip install matplotlib --upgrade
3,jupyter:Ipython升级版
安装方法:pip install jupter --upgrade
4,scikit-image:有一组图像处理算法,过滤图片变得简单,适用于对图像的预处理
安装方法:pip install scikit-image --upgrade
5,librosa:用python进行音频特征提取
安装方法:pip install librosa --upgrade
6,nltk:包含大量的语料库,很方便的完成很多自然语言处理的任务
安装方法:pip install nltk --upgrade
安装完成后,需要导入nltk工具包下载nltk数据源:
import nltk
nltk.download()
7,keras:第一个被添加到tensorflow和心中的高级别框架
安装方法:pip install keras --upgrade
8,tflearn:另一个支持tensorflow的第三方框架
安装方法:pip install git+https://github.com/tflearn/tflearn.git
TensorFlow可视化:
1,playground:-----http://playground.tensorflow.org/
2,TensorBoard:
是TebsorFlow自带的一个强大的可视化工具,也是一个web应用程序,目前支持7种可视化:
①:SCALARS(scalars):展示训练过程中的准确率.损失值,权重/偏置的变化情况
②:IMAGES(images):展示训练过程中记录的图像
③:AUDIO(audio):展示训练过程中记录的音频
④:GRAPHS(graphs):展示模型的数据流图,以及训练在各个设备上消耗的内存和时间
⑤:DISTRIBUTIONS(distributions):展示训练过程中记录的数据分布图
⑥:HISTOGRAMS(histograms):展示训练过程中记录数据柱状图
⑦:EMBEDDINGS(embeddings):展示词向量(如Word2vec)后的投影分布
用法:运行本地服务器,监听6006端口,在浏览器发出请求时,分析训练时记录的数据来绘制训练过程中的图像
步骤:
1,运行测试数据集:python tensorflow-1.2.0/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py
2,打开TensorBoard面板:tensorboard --logdir=/tmp/tensorflow/mnist/logs/mnist_with_summaries
3,浏览器访问本地IP加端口:6006