- 博客(79)
- 资源 (29)
- 收藏
- 关注
原创 深度学习(十五)卷积神经网络CNN(5)---池化层/采样层
池化层的输入一般来源于上一个卷积层,主要作用是提供了很强的鲁棒性(例如max-pooling是取一小块区域中的最大值,此时若此区域中的其他值略有变化,或者图像稍有平移,pooling后的结果仍不变),并且减少了参数的数量,防止过拟合现象的发生。池化层一般没有参数,所以反向传播的时候,只需对输入参数求导,不需要进行权值更新。 池化层夹在连续的卷积层中间, 用于压缩数据和参数...
2018-06-03 19:51:21
5377
1
原创 深度学习(十五)卷积神经网络CNN(4)---权值共享
作用:大大减少网络训练参数的同时,还可以实现并行训练。 原理:所谓权值共享就是说给定一张输入图片,用一个卷积核来卷积这张图,卷积核里的值叫做权重,这张图的每个位置是被同一个卷积核扫的,即卷积的时候所用的权重是一样的。其实权值共享这个词说全了就是整张图片在使用同一个卷积核内的参数,比如一个3*3*1的卷积核,这个卷积核内9个的参数被整张图共享,而不会因为图像内位置的不同而改...
2018-06-03 19:51:07
11676
3
原创 深度学习(十五)卷积神经网络CNN(3)---局部连接
作用:降低参数数目,减少网络运算复杂度。 原理:一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。网络部分连通的思想,也是受启发于生物学里面的视觉系统结构。视觉皮层的神经元就是局部接受信息...
2018-06-03 19:50:50
9196
1
原创 深度学习(十五)卷积神经网络CNN(2)---卷积层
卷积层的输出特征图个数num_output(或者干脆说卷积核个数)是由经验定义的,之后框架会计算卷积核个数,可以多看别人的经典网络,对比自己问题的规模进行借鉴; 关于卷积核的大小,几个小的卷积核(例如3×3)叠加在一起,相比一个大的卷积核(例如7×7),与原图的连通性不变(卷积效果大致相同)却可大大降低参数的个数及计算复杂度。...
2018-06-03 19:50:26
497
原创 深度学习(十五)卷积神经网络CNN(1)---网络简介
从连接方式看,全连接网络的好处是每个输入维度的信息都会传播到其后任何一个节点中去,会最大程度的让整个网络的节点都不会“漏掉”这个维度所贡献的因素。不过全连接网络的缺点是w和b参数格外多,即训练中要更新的权重非常多,整个网络的收敛非常慢,对于图片识别的这种输入像素一般几百万(以像素为单位)的分类处理,就会变得不可行,因为处理器的计算速度不能满足。所以卷积神经网络(concolution...
2018-06-03 19:50:01
542
原创 深度学习(十二)过拟合的解决方案(清洗数据、增强数据、正则化、Dropout)
基本上所做的项目中都出现了过拟合,这也是每个神经网络训练者需要面对的问题。越多的神经元,就越能表达复杂的模型,但也不是越多越好,在训练样本有限的情况下,很容易导致过拟合。过拟合的解决方案:1、重新清洗数据2、增加训练数据量3、损失函数加正则化项(详细可看正则化惩罚项文章链接) 不同惩罚系数下的拟合结果对比如图,惩罚系数λ=0.001伸出的爪子本质就是过拟合了,λ=0.1泛...
2018-06-03 19:49:08
5013
1
原创 深度学习(九)正则化惩罚项
在机器学习特别是深度学习中,我们通过大量数据集希望训练得到精确、泛化能力强的模型,对于生活中的对象越简洁、抽象就越容易描述和分别,相反,对象越具体、复杂、明显就越不容易描述区分,描述区分的泛化能力就越不好。 比如,描述一个物体是“方的”,那我们会想到大概这个物体的投影应该是四条边,两两平行且垂直,描述此物体忽略了材质、质量、颜色等等的性状,描述的物体的多,相反,描述的内容...
2018-05-31 21:58:28
31799
2
原创 深度学习(五)学习率的调节
学习率对于深度学习是一个重要的超参数,它控制着基于损失梯度调整神经网络权值的速度,大多数优化算法(SGD、RMSprop、Adam)对其都有所涉及。学习率越小,损失梯度下降的速度越慢,收敛的时间更长,如公式所示:new_weight= existing_weight — learning_rate * gradient(新权值 = 当前权值 – 学习率 × 梯度) 如果学习...
2018-05-31 21:57:12
40972
1
原创 函数指针和回调函数以及返回指向函数的指针
函数指针指向的是函数而非对象。和其他类型一样,函数指针指向某种特定类型。因为函数的类型由它的返回类型和形参类型共同决定,与函数名无关,所以想要声明一个函数指针,只需要用指针替换函数名即可,例如:比较字符串长度的函数:bool LengthCompare(const string &, const string &);此函数的函数指针为: bool (*pf)(c...
2018-05-31 21:56:02
8303
1
原创 error: stray ‘\200’ in program
此类错误基本上是由从网页复制代码因包含中文的空格和字符之类的东西导致的错误,linux下可以通过cat file.cpp -A 查看出错的字符,代码量不多的情况下最好在出错位置重新敲一遍。...
2018-05-31 21:41:30
655
原创 C++调试帮助--__func__的使用
__func__是编译器定义的一个局部静态变量(const char的一个静态数组),用于存放函数的名字。#include<iostream>using namespace std;const char* hello() {return __func__;}int main(){ cout << " : in function " << __fu...
2018-05-31 14:37:33
4798
原创 深度学习(四)权值初始化
对于权重w的初始化,一般常用高斯初始化,有时也可以用随机初始化,一定不能全用某一常值初始化。b的初始化可用全常值初始化即可(很多论文都是)。...
2018-05-30 22:11:09
1611
原创 深度学习(三)超参数与交叉验证
超参数是指在机器学习中在算法训练开始前预设的一些参数值,这些参数值一般无法通过算法本身学会更改,比如KNN算法中的Manhattan distance(曼哈顿距离)、Euclidean distance(欧式距离),K-Means算法中的簇数N,深度学习的学习率lr;与其相对的就是那些在算法中可以通过训练学到的参数,比如权值权值w、偏置b等。超参数的确定可以通过交叉验证的方法。 ...
2018-05-30 22:10:50
7214
1
原创 机器学习(十六)---机器学习算法总结(1)
监督学习KNN算法计算测试样本与训练集的各样本的距离,按从小到大取前k个距离排序,然后选择这k个最相似数据中出现次数最多的分类作为新数据的分类。 朴素贝叶斯实现的是概率量化计算的模型,它的解释是通过对样本的统计,然后算出某件事A发生的概率和某件事B发生的概率之间的量化关系。 决策树实现的是通过选择合适维度来增加约束条件降低分类的信息熵。 回归模型是通过建模与拟合来确定待定系数,通过不断调整待定系数...
2018-05-30 11:20:52
167
ok6410裸机/linux i2c驱动
2017-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人