tensorflow中的神经网络笔记
1、NN----神经网络
2、CNN卷积神经网络
CNN网络一共有5个层级结构:
-
- 输入层
- 卷积层
- 激活层
- 池化层
- 全连接FC层
一、输入层
与传统神经网络/机器学习一样,模型需要输入的进行预处理操作,
常见的输入层中预处理方式有:
- 去均值
- 归一化
- PCA/SVD降维等
1、去均值:各维度都减对应维度的均值,使得输入数据各个维度都中心化为0,进行去均值的原因是因为如果不去均值的话会容易拟合。
2、归一化:
一种是最值归一化,比如把最大值归一化成1,最小值归一化成-1;或把最大值归一化成1,最小值归一化成0。适用于本来就分布在有限范围内的数据。 另一种是均值方差归一化,一般是把均值归一化成0,方差归一化成1。适用于分布没有明显边界的情况。
3、PCA/白化
(1).PCA是指通过抛弃携带信息量较少的维度,保留主要的特征信息来对数据进行降维处理,思路上是使用少数几个有代表性、互不相关的特征来代替原先的大量的、存在一定相关性的特征,从而加速机器学习进程。(降维技术可单独讲)
PCA可用于特征提取,数据压缩,去噪声,降维等操作。
(2).白化的目的是去掉数据之间的相关联度和令方差均一化,由于图像中相邻像素之间具有很强的相关性,所以用于训练时很多输入是冗余的。这时候去相关的操作就可以采用白化操作,从而使得:
1.减少特征之间的相关性
2.特征具有相同的方差(协方差阵为1)
(3)举个白化的例子,如对于两个特征的关联分布如左图,可以看出特征组合点存在线性关系,此时我们进行白化后(特征向量的投影)可以变成右图的形式,无关联性。
而且白化因为进行了方差均一化,所以还可以提升训练速度。
二、卷积层
三、激励层
所谓激励,实际上是对卷积层的输出结果做一次非线性映射。
如果不用激励函数(其实就相当于激励函数是f(x)=x),这种情况下,每一层的输出都是上一层输入的线性函数。容易得出,无论有多少神经网络层,输出都是输入的线性组合,与没有隐层的效果是一样的,这就是最原始的感知机了。
常用的激励函数有:
Sigmoid函数
Tanh函数
ReLU
Leaky ReLU
ELU
Maxout
中间激励层建议:首先ReLU,因为迭代速度快,但是有可能效果不加。如果ReLU失效的情况下,考虑使用Leaky ReLU或者Maxout,此时一般情况都可以解决。Tanh函数在文本和音频处理有比较好的效果。分类网络的最后一层激活函数一般用(即预测函数):softmax函数,或者结合其他函数
四、池化层
池化(Pooling):也称为欠采样或下采样。主要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。主要有:
- Max Pooling:最大池化
- Average Pooling:平均池化
关于池化的博客:https://blog.csdn.net/qq_41661809/article/details/96500250
虽然人不太容易分辨出池化后的特征图,但是没关系,机器还是可以识别的。
五、输出层(全连接层)
相关文章
- 机器学习笔记(八)---- 神经网络【华为云分享】
- keras神经网络开发知识笔记
- React Native学习笔记(1) 环境配置,项目结构,开发环境结构
- 机器学习笔记 - 基于tensorflow从头开始构建图神经网络
- 机器学习笔记 - 使用python从头构建和训练神经网络
- 机器学习笔记 - 使用自己收集的图片以及前馈神经网络,进行图像分类训练
- 机器学习笔记 - 前馈神经网络(FFNN)用作回归问题的波士顿房价预测
- 机器学习笔记 - Kornia:结合OpenCV的PyTorch框架
- 机器学习笔记 - 卷积神经网络备忘清单
- 机器学习笔记 - 加速神经网络训练的 7 个技巧
- Javascript 学习 笔记五
- uni-app 前后端实战课 - 《悦读》学习笔记:【创建用户数据表,完成app端用户登录功能】小程序开发实例教程5
- 机器学习笔记(八)---- 神经网络【华为云分享】
- React学习笔记(二)—— JSX、组件与生命周期
- 《30天自制操作系统》笔记(11)——高分辨率
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现
- Amazon Virtual Private Cloud (VPC) 笔记
- 深度学习笔记:卷积神经网络的可视化--特征图
- pytorch学习笔记(九):卷积神经网络CNN(基础篇)