
人工智能
yeyustudy
这个作者很懒,什么都没留下…
展开
-
fastai2017(一)
超参数调试技巧1、权重初始化方差遵循的准则:var=2nin+nout\operatorname{var} = \frac{2}{{{n_{in}} + {n_{out}}}}var=nin+nout2其中输入输出指的是输入与输出的数目,这个准则是为了防止发生梯度消失与梯度爆炸,同时为了保证最终预测结果范围合适。...原创 2018-09-25 11:36:07 · 741 阅读 · 0 评论 -
fastai2017(三)
1、训练模型时,学习率应该从小到大调整,如果发现训练的准确度随着epoch的变化差距比较大,说明可以适当的调大一点。原创 2018-10-02 12:20:05 · 503 阅读 · 0 评论 -
fastai2017(四)
1、在自然语言处理中,不需要像在计算机视觉中那样传送整个预训练权值,只需要传送预训练词向量即可,也就是学习完成的词嵌入(embedding)2、在NLP中,也可以使用卷积层,不过此时使用的是一维的卷积层3、进行训练时,通常使用预训练的词向量,此时嵌入层的权值设置为不可改变,经过几个epoch的训练之后,将嵌入层的权值设为可训练进行训练词向量,这样操作效果会更好。4、当对卷积核大小无法把握的时...原创 2018-10-05 20:17:17 · 305 阅读 · 0 评论 -
fastai2017(五)
1、原创 2018-10-08 09:38:37 · 201 阅读 · 0 评论 -
fastai2017(二)
1、最大池化的作用:1、保持了平移不变性2、进行池化操作后,每一次卷积能覆盖更大的区域,即能提取更复杂的特征,增大了感受野。2、理论上来说,cnn可以用于任何具有顺序的信息3、在建立keras模型时,可以先从批量正则化开始,这样会先预处理输入数据4、pseudo label:貌似是一种半监督的方法,取一部分数据进行训练得到伪标签,将这些伪标签与真实的标签结合在一起,对数据进行训练5、元数据...原创 2018-09-29 20:18:19 · 221 阅读 · 0 评论 -
fastai2017(六)
1、如何阅读论文:读摘要,了解要解决的问题,读引言,了解问题的细节以及是否解决了问题,之后跳到实验结果,看结果是否有比较好的效果,之后回到伪代码部分尝试实现较好的效果,同时找到论文的相关博客,以求在最短的时间内理解。读完论文后尝试写一篇博客...原创 2018-10-12 21:27:03 · 219 阅读 · 0 评论 -
深度学习(十一)
写在前面的话:此部分是关于fastai的学习部分原创 2018-10-24 15:49:49 · 302 阅读 · 0 评论 -
deeplab v3+训练自己的数据集
一、数据集的制作原创 2018-11-11 22:07:19 · 5800 阅读 · 5 评论 -
语义分割方法简要介绍
一、个人理解在正文开始之前,先说说笔者对语义分割的理解,语义分割,其实就是为图片中的每个像素打上相应的标签,即将其所代表的语义具现化,呈现出的视觉效果就是图片中不同的目标有不同的颜色,如下所示:目前语义分割主要针对的问题是以下几点:1)如何恢复原有的分辨率2)如何尽可能的增大感受野3)如何处理多尺度问题下面,笔者会以时间为顺序,给出在语义分割领域比较经典的论文。二、相关论文1、F...原创 2018-12-20 12:34:24 · 12045 阅读 · 0 评论 -
深度学习(十四)
RNN1、bptt:基于时间的反向传播算法,其实就是rnn中使用的反向传播。在fastai中的简单介绍貌似就是在几个时间步之后只记住那些状态,而不再记忆这其中进行的操作,通过这种方式,不再对全部的字符进行反向传播2、创建批次进行并行训练,使用如下的方法:CNN1、自适应最大池化:指定输出的分辨率,自动作最大池化2、训练的时候可以更新dropout与batch normalization...原创 2018-11-19 21:15:31 · 203 阅读 · 0 评论 -
深度学习(十六)
1、学习率改变的新方法:刚开始陡升,后来慢慢下降;其中32是最大的学习率与最小的学习率之比,10代表第一个epoch升高,后面九个epoch缓缓下降2、Concat pooling:即将激活值,激活值的平均池化,激活值的最大池化连接在一起...原创 2018-11-28 20:23:37 · 220 阅读 · 0 评论 -
深度学习(十七)
1、在残差网络中利用1*1进行降维,即设计一个瓶颈层来使得网络更深可能不是一个好主意,网络的通道更多即网络更宽一些在实验中可能更能利用GPU的运算资源。2、一个训练的技巧,当使用较小的学习率时使用较大的动量,使用较大的学习率时使用较小的动量,两者的关系如图所示:...原创 2018-12-05 14:10:08 · 189 阅读 · 0 评论 -
深度学习(十八)
1、训练时尝试不同的学习率不同的输入数据大小能加快训练过程。2、使用一张随机噪声生成特定的图片是比较困难的,因为不太好优化,将噪声变得平滑一些可能更好。3、BFGS优化方法:不止需要知道梯度,还需要知道二阶偏导数,在高维的情况下,梯度使用雅克比矩阵表示,而二阶导数使用黑森矩阵表示。为了降低计算量,只计算最后的十几步,并且使用近似的方法来计算二阶导数。4、损失函数有时候需要乘上一个比例因子,因...原创 2018-12-09 12:35:00 · 435 阅读 · 0 评论 -
fastai v1.0文档学习(三)
训练网络简介learner通过lr_find方法找到合适的学习率,通过fit_one_cycle来训练网络,通过to_fp16来转换半精度。Learner类方法描述:Learner(`data`:DataBunch, `model`:Module, `opt_func`:Callable=`'Adam'`, `loss_func`:Callable=`None`, `metrics`:C...原创 2019-01-25 19:19:01 · 1730 阅读 · 0 评论 -
fastai v1.0学习文档(一)
此部分是笔者学习fastai文档关于图像部分的记录,只记录了笔者学习过程中觉得较为重要的东西,比较简略,可能并不适合其他人,详情还请参考fastai官方文档fastai的简单使用fastai的是一种建立在pytorch的顶层框架,类似于tensorflow的keras,其简化了建立神经网络的过程。fastai的主要对象是learner,其将数据与网络绑定,更加简便的实现训练等过程。在fast...原创 2019-01-21 16:38:03 · 4644 阅读 · 0 评论 -
fastai v1.0文档学习(二)
此部分是笔者学习fastai文档关于图像部分的记录,只记录了笔者学习过程中觉得较为重要的东西,比较简略,可能并不适合其他人,详情还请参考fastai官方文档读取数据根据不同任务生成数据集数据集形式:图片数据,文件夹名代表标签使用函数ImageDataBunch.from_folder,具体示例如下:data = ImageDataBunch.from_folder(path, ds_...原创 2019-01-21 16:43:58 · 3274 阅读 · 0 评论 -
深度学习(十五)
简单总结迁移学习: 1、拿到预训练模型,移除最后一层,使用随机的层进行训练 2、进行微调,解冻其他的层调整参数 3、有选择的情况下进行端到端的微调 过拟合处理: 可以增加数据量,进行简单的数据增强,做一些批量归一化等操作,做一些正则化、权重衰减和丢弃的操作,最后还可以减小模型的复杂度目标检测目的:用一个合适的边界框将目标圈定,并使用标签标明所属类别 步骤:1)对图片中最...原创 2018-09-18 10:25:17 · 215 阅读 · 0 评论 -
计算机视觉(五)
特征可视化1、对最后一层特征的处理:使用t-SNE降维技术,将最后的高维向量压缩到两维进行申请。 2、利用梯度上升来生成图像: 3、deepdream:试图放大提取到的特征,其操作是在神经网络的某一层进行反向传播,使梯度等于这一层的激活值,即将梯度方向传播回去 4、特征反演:输入图像后在某一层取一个特征值,通过梯度上升与正则化之后反演回去重构图像 5、纹理生成:将图片输入到神经网络...原创 2018-09-07 14:11:58 · 250 阅读 · 0 评论 -
深度学习(一)
算法的优化任何网络要想达到极好的效果都不是一簇而就的,需要一个迭代的过程,不断的调整参数,如果初始参数能够设置的很好,无疑能够极大的缩短这个过程。数据集对于数据集,大体可分为三类:训练集,交叉验证集,测试集 1、在机器学习时代,三者的比例为6:2:2,但随着数据的爆炸式的增长,训练集的比例占的越来越大,而其余两者只需要很少的数据进行验证即可。 2、当测试集跟训练集不匹配时,一个...原创 2018-07-25 16:19:14 · 243 阅读 · 0 评论 -
深度学习(二)
算法优化mini-batch将庞大的数据集分成许多个batch,遍历这些batch,每个batch使用梯度下降法进行优化 如果batch的数目太大,则每次迭代的时间太长,如果batch的数目为1,则退化为随机梯度下降法,这样就丧失了向量化的加速作用,因此,需要合理选择batch的数目,一般对于较大的数据集,选择为64或128到512,一般是2的整数次幂。指数加权平均vt=βv...原创 2018-07-26 14:45:44 · 171 阅读 · 0 评论 -
深度学习(五)
卷积神经网络边缘检测适用的滤波核为: 用于检测垂直边缘,经过卷积之后,会将从亮变暗的边缘检测出来,结果显示高亮 水平边缘检测器: padding1、单纯使用卷积时,根据公式最终结果是(n−f+1)∗(n−f+1)(n−f+1)∗(n−f+1)(n - f + 1)*(n - f + 1) ,图像的大小会缩小,边缘信息也会缺失,这时可以进行填充操作,在矩阵外补零来避免,这也...原创 2018-08-05 09:30:02 · 272 阅读 · 0 评论 -
深度学习(六)
卷积神经网络经典的卷积神经网络LeNet:是较早用于手写识别的神经网络,输入时较小的灰度图片,经过卷积,尺寸不断变小,深度不断加深,最终实现较好的识别; AlexNet VGG16残差块(Residual block/Skip connection)指的是某一层的信息直接传递到较深的一层中,具体操作是较深的一层在激活函数作用之前直接加上较浅的一层的信息 使用残差网络能够将网络...原创 2018-08-05 18:51:23 · 237 阅读 · 0 评论 -
深度学习(四)
结构化深度学习1、正交化:即参数影响单一化,每次调整一个参数只能影响一个特征 2、查准率:识别出图片的准确率 查全率:在所以的一类图片中机器识别的所占的比重 一个重要的单实数评价指标:F1=21R+1PF1=21R+1PF1 = \frac{2}{{\frac{1}{R} + \frac{1}{P}}} 3、训练集与测试集服从同一分布 4、误差分析:实质是分析在错误标记中,针对某一因...原创 2018-08-01 10:14:33 · 299 阅读 · 0 评论 -
深度学习(三)
算法优化调参1、在调整超参数时,其中最终要的是αα\alpha,其次是动量ββ\beta、隐藏层单元以及mini-batch,之后还可以调整层数跟学习率衰减 2、在深度学习中,随机选择参数的值可能更好一些,因为事先并不知道哪个参数相对比较重要,另一个比较重要的原则是从粗略到精细,到大体确定了超参数的范围,再在这个范围内进行随机取值,获得更加精细的参数 3、当确定了参数的范围,对其进...原创 2018-07-28 12:11:23 · 153 阅读 · 0 评论 -
深度学习(七)
卷积神经网络目标定位1、问题描述:既要判断出目标,又要对目标进行定位,因此需要判断有木目标,准确判断出是何种目标以及定位所画方框的位置 2、基于窗口滑动的目标检测算法: 1)使用固定步幅滑动窗口,检测窗口内有无目标,之后使用更大的窗口继续遍历,这样,总会有窗口包含目标,这种方法虽然可行,但计算代价太大 2)改进一:并不是将每个滑动窗口分别输入网络,而是将整张图片直接输入,这样...原创 2018-08-05 22:29:57 · 181 阅读 · 0 评论 -
深度学习(八)
卷积神经网络人脸识别1、一次学习问题 仅仅通过一个训练样例来识别,解决问题的关键是学习一个差异函数,能输出两张输入图片的相似度 2、实现(Siamese):通过相同的网络输出向量,比对输出向量的差异大小;使用的代价函数是一个三元损失函数,包括输入图片,正样本,负样本,其定义如下: L(A,P,N)=max(||f(A)−f(P)||2−||f(A)−f(N)||2+α)L(A,...原创 2018-08-06 09:58:06 · 170 阅读 · 0 评论 -
深度学习(九)
循环神经网络one-hot向量指明了在词典中的位置,当前位置为1,其余位置全为0结构1、不仅使用当前输入,还使用原来的输入 2、多对一的结构:不再是每个时间步都有输出,而是最后一个时间步有输出...原创 2018-08-06 19:18:32 · 156 阅读 · 0 评论 -
深度学习(十)
循环神经网络特征化表示(词嵌入)1、针对one-hot向量,其不能表现词汇之间的相似关系,泛化能力较差,所以可以更换一种表示方式,将词汇进行特征化表示,即用词汇的特征代表词汇。 2、判断词汇的相似程度一般使用余弦相似度,即sim(u,v)=uTv||u||2||v||2sim(u,v)=uTv||u||2||v||2sim(u,v) = \frac{{{u^T}v}}{{||u|{|...原创 2018-08-07 18:48:16 · 248 阅读 · 0 评论 -
深度学习(十三)
RNN1、嵌入矩阵的设置:一般来说,设置嵌入矩阵要比其基数多一个,代表未知的参量,确定嵌入矩阵大小的经验法则是其基数除以2,但不大于50(可以与前文所述RNN那里一起理解)...原创 2018-08-22 20:31:39 · 387 阅读 · 0 评论 -
深度学习(十二)
如何使用keras建立一个model1、定义一个数据生成器:需要设置什么样的数据扩充,想做什么样的规范化等等,然后从数据目录生成数据,示例代码如下: 2、建立模型,主要是定义神经网络的各个层,示例如下: 3、编译模型 4、输入参数进行训练:使用model.fit_generator 5、微调,冻结某些层dropout防止过拟合,丢掉一些权值,使模型变得简单些,当然,...原创 2018-08-21 11:21:36 · 179 阅读 · 0 评论 -
计算机视觉(一)
计算机视觉的一个难题:无论是拍照的角度、光线,形态变化、有无遮挡等等的因素,人都能很容易的识别出图片的目标,但对于计算机来说,这是一件很困难的事情。k近邻法1、距离度量选择: 前者会被坐标轴的变化所影响,后者则不会 2、超参数:实质上是一些我们不会从数据中学到的需要提前设置的参数 3、数据集较小的情况下使用交叉验证 4、knn实际上并不适用于对图像进行识别,这是由于其度量选...原创 2018-09-01 20:44:18 · 319 阅读 · 0 评论 -
计算机视觉(四)
循环神经网络原创 2018-09-05 19:23:53 · 167 阅读 · 0 评论 -
计算机视觉(二)
反向传播1、实质就是一个利用链式法则求梯度的过程,在实际中,参数的计算会及其复杂,此时如果利用公式来计算梯度非常麻烦,所以可以利用反向传播,所谓的反向传播,其实可以利用计算图来解释,当进行前向传播时,我们将每一步的结果进行存储,进行反向传播时,我们只需要利用链式法则计算每一步的梯度即可,这样可以利用原来存储的前向传播的值,一直将所有的梯度计算出来。 2、梯度与权值矩阵的大小相同,这是因为...原创 2018-09-03 14:44:06 · 338 阅读 · 0 评论 -
计算机视觉(三)
训练与调优激活函数1、sigmoid函数不再适用的原因:1)在某些情况下梯度会消失,不利于反向传播,例如,当输如的值过大或过小时,根据函数的图像,返回的梯度都会是0,阻断了梯度的反向传播。2)不是以0为中心,梯度更新低效 2、tanh函数:第二个问题可以避免,但第一个避免不了 3、relu:又快又简单,最接近神经元的工作过程,但仍有缺点,例如不以0为中心,负半轴容易出现梯度的消失 ...原创 2018-09-03 19:02:56 · 396 阅读 · 0 评论