深度学习
gukedream
人不能像走兽那样活着,应该追求知识和美德。
展开
-
CTC损失函数及其实现[1]
CTC损失函数及其实现[1]简介原理实现参考本文主要讲解了CTC损失函数的主要原理以及介绍了目前该损失函数的各种实现.简介显示中许多序列学习任务需要从含噪声,并且未分割的输入数据中预测出标签序列. 例如,语音识别,需要将声学信号转录成单词。RNNs似乎是一种适合这种任务的强大的序列学习器,但是,由于需要预分割的训练数据,以及需要后处理,将RNNs的输出转换为标签序列,使得该方法的应用受到限制...原创 2019-01-18 14:05:21 · 5855 阅读 · 0 评论 -
机器学习 [logistic函数和softmax函数]
简单总结一下机器学习最常见的两个函数,一个是logistic函数,另一个是softmax函数,若有不足之处,希望大家可以帮忙指正。本文首先分别介绍logistic函数和softmax函数的定义和应用,然后针对两者的联系和区别进行了总结1. logistic函数1.1 logistic函数定义 引用wiki百科的定义: A logistic function or logist...原创 2019-01-19 21:17:28 · 727 阅读 · 0 评论 -
机器学习 [交叉熵损失函数]
表达式二分类在二分的情况下,模型最后需要预测的结果只有两种情况,对于每个类别我们的预测得到的概率为p和1-p。此时表达式为:其中:y——表示样本的label,正类为1,负类为0 p——表示样本预测为正的概率多分类多分类的情况实际上就是对二分类的扩展:其中:M——类别的数量; y——指示变量(0或1),如果该类别和样本的类别相同就是1,否则是0; p——对...原创 2019-01-20 15:25:32 · 1150 阅读 · 0 评论 -
目标检测 [SSD原理与实现]
前言目标检测近年来已经取得了很重要的进展,主流的算法主要分为两个类型(参考RefineDet):(1)two-stage方法,如R-CNN系算法,其主要思路是先通过启发式方法(selective search)或者CNN网络(RPN)产生一系列稀疏的候选框,然后对这些候选框进行分类与回归,two-stage方法的优势是准确度高;(2)one-stage方法,如Yolo和SSD,其主要思路是均匀...转载 2019-01-20 16:25:06 · 455 阅读 · 0 评论 -
深度学习 [调参经验]
调参经验模型选择通常我会使用一个简单的CNN模型(这个模型一般包含5个卷积层)将数据扔进去训练跑出一个baseline,这一步工作主要是为了验证数据集的质量。如果这个模型训练结果很差就不要先调试模型,需要检查一下你的训练集数据,看看图像的质量,图像标签是否正确,模型的代码是否正确等等,否则就是在做无用功,毕竟:garbage in,garbage out。 超参数的选择调参是项技术...原创 2019-01-21 19:35:58 · 320 阅读 · 0 评论 -
目标检测 [模型的评估指标mAP详解(附代码)]
本文翻译自Measuring Object Detection models - mAP - What is Mean Average Precision?tarangshah.com 对于使用机器学习解决的大多数常见问题,通常有多种可用的模型。每个模型都有自己的独特之处,并随因素变化而表现不同。每个模型在“验证/测试”数据集上来评估性能,性能衡量使用各种统计量如准确度(accu...转载 2019-01-21 19:46:30 · 1164 阅读 · 1 评论 -
DenseNet:比ResNet更优的CNN模型
前言在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法,比如最近的GoogLenet,VGG-19,Incepetion等模型。CNN史上的一个里程碑事件是ResNet模型的出现,ResNet可以训练出更深的CNN模型,从而实现更高的准确度。ResNet模型的核心是通过建立前面层与后面层之间的“短路连接”(shortcuts,skip connection),这有助于训练过程中梯度的...转载 2019-02-12 14:35:56 · 1528 阅读 · 0 评论 -
1×1 卷积核的作用
一、来源:[1312.4400] Network In Network (如果1×1卷积核接在普通的卷积层后面,配合激活函数,即可实现network in network的结构)二、应用:GoogleNet中的Inception、ResNet中的残差模块三、作用:1、降维(减少参数)例子1 : GoogleNet中的3a模块输入的feature map是28×28×1921...原创 2019-02-12 15:42:35 · 1077 阅读 · 0 评论 -
softmax的特征分布会呈放射状的原因
为直观了解softmax loss,在mnist数据集上训练了一个lenet模型作为例子。先将特征维降低到2,并画了10w个训练样本的2维特征在平面上,如图2所示。从图中可以看到,如果使用欧式距离作为度量方式,则f2与f1之间的距离比f2到f3的近很多,达不到好的效果。而同时可以看到,对于这些特征以角度进行划分的效果会比欧式距离和内积要好,所以之前很多都会采用余弦相似度作为度量方法...原创 2019-03-01 09:43:24 · 1611 阅读 · 0 评论 -
非极大值抑制算法(NMS)及python实现
以下图为例,由于滑动窗口,同一个人可能有好几个框(每一个框都带有一个分类器得分)而我们的目标是一个人只保留一个最优的框:于是我们就要用到非极大值抑制,来抑制那些冗余的框: 抑制的过程是一个迭代-遍历-消除的过程。(1)将所有框的得分排序,选中最高分及其对应的框:(2)遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除。(3)从未处理的框...转载 2019-03-01 10:39:25 · 3504 阅读 · 0 评论 -
目标函数反向求道注意事项
Loss函数通常作用于一个batch在计算loss时,我们不会用一条数据去求梯度,进行优化。这样会导致loss波动较大,而且不利于发挥计算机并行计算的能力。我们会选择一个batch的数据,用其均值求梯度,进行优化# 求batch内的均值cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indi...转载 2019-03-01 10:55:11 · 272 阅读 · 0 评论 -
深度学习之模型退化
定义:对合适的深度模型继续增加层数,模型准确率会下滑(不是overfit造成),training error和test error都会很高。如果梯度范数的大小本身和深度网络的训练困难并没有关系,那是什么原因呢?答案是,模型的退化基本上决定了训练性能。为什么退化会损害训练性能?直观地说,学习曲线基本上会在参数空间的退化方向变慢,因此退化会减少模型的有效维度。在以前,你可能会认为是用参数...原创 2019-03-04 14:36:02 · 10813 阅读 · 0 评论 -
卷积神经网络 [数学特性]
神经网络代表了人工智能中的连接主义思想,它是一种仿生的方法,被看做是对动物大脑神经系统的模拟。在实现时,它又和大脑的结构不同。从数学上看,多层神经网络本质上是一个复合函数。既然神经网络在本质上是一个复杂的复合函数,这会让我们思考一个问题:这个函数的建模能力有多强?即它能模拟什么样的目标函数?已经证明,只要激活函数选择得当,神经元个数足够多,使用3层即包含一个隐含层的神经网络就可以实现对任何一个...原创 2019-01-19 10:44:20 · 1093 阅读 · 0 评论 -
卷积神经网络 [卷积层可视化]
卷积网络设计的初衷是通过卷积层和池化层逐级提取图像在各个不同抽象层次的特征,我们会有这样的疑问:现实结果真的是这样的吗?先看图像卷积之后的结果。下面是一张卡车的图像:卡车图像用AlexNet网络处理之后,第一个卷积层的输出结果(我们把各个卷积核的结果依次排开了)是这样的:卷层1的结果可以看到这里抽取了一些边缘信息。第二个卷积层的输出结果是这样的:卷层2的结果它抽取...原创 2019-01-19 10:27:37 · 3778 阅读 · 0 评论 -
深入理解 LSTM 网络
本文译自 Christopher Olah 的博文 Recurrent Neural Networks人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。传统的神经网络并不能做到这点,看起来也像是一种巨大的弊端。例如...转载 2019-01-13 12:37:45 · 352 阅读 · 1 评论 -
CTC损失函数及其实现[2]
最近用tensorflow写了个OCR的程序,在实现的过程中,发现自己还是跳了不少坑,在这里做一个记录,便于以后回忆。主要的内容有lstm+ctc具体的输入输出,以及TF中的CTC和百度开源的warpCTC在具体使用中的区别。正文输入输出因为我最后要最小化的目标函数就是ctc_loss,所以下面就从如何构造输入输出说起。tf.nn.ctc_loss先从TF自带的tf.nn.ct...转载 2019-01-18 14:36:08 · 3761 阅读 · 0 评论 -
Keras 函数[TimeDistributed]理解
这个函数刚接触时不太好理解,其实结合几个例子来理解就容易多了.例1:Keras 官网文档关于该函数的例子,该文档说:This wrapper applies a layer to every temporal slice of an input.The input should be at least 3D, and the dimension of index one will...原创 2019-01-18 14:59:26 · 6492 阅读 · 11 评论 -
Attention Model(注意力模型)学习总结
最近一直在研究深度语义匹配算法,搭建了个模型,跑起来效果并不是很理想,在分析原因的过程中,发现注意力模型在解决这个问题上还是很有帮助的,所以花了两天研究了一下。 此文大部分参考深度学习中的注意力机制(2017版) 张俊林的博客,不过添加了一些个人的思考与理解过程。在github上找到一份基于keras框架实现的可运行的注意模型代码:Attention_Network_With_Keras。...转载 2019-01-13 15:51:53 · 733 阅读 · 0 评论 -
概览深度学习中的五大正则化方法和七大优化策略
选自arXiv机器之心编译深度学习中的正则化与优化策略一直是非常重要的部分,它们很大程度上决定了模型的泛化与收敛等性能。本文主要以深度卷积网络为例,探讨了深度学习中的五项正则化与七项优化策略,并重点解释了当前最为流行的 Adam 优化算法。本文主体介绍和简要分析基于南洋理工的概述论文,而 Adam 方法的具体介绍基于 14 年的 Adam 论文。近来在深度学习中,卷积神经网络和循环神经...转载 2019-01-13 16:39:27 · 761 阅读 · 0 评论 -
Adam那么棒,为什么还对SGD念念不忘 (1) —— 一个框架看懂优化算法
机器学习界有一群炼丹师,他们每天的日常是: 拿来药材(数据),架起八卦炉(模型),点着六味真火(优化算法),就摇着蒲扇等着丹药出炉了。 不过,当过厨子的都知道,同样的食材,同样的菜谱,但火候不一样了,这出来的口味可是千差万别。火小了夹生,火大了易糊,火不匀则半生半糊。 机器学习也是一样,模型优化算法的选择直接关系到最终模型的性能。有时候效果不好,未必是特征的问题或者模型设计...转载 2019-01-13 16:41:25 · 936 阅读 · 0 评论 -
Adam那么棒,为什么还对SGD念念不忘 (2)—— Adam的两宗罪
在上篇文章中,我们用一个框架来回顾了主流的深度学习优化算法。可以看到,一代又一代的研究者们为了我们能炼(xun)好(hao)金(mo)丹(xing)可谓是煞费苦心。从理论上看,一代更比一代完善,Adam/Nadam已经登峰造极了,为什么大家还是不忘初心SGD呢? 举个栗子。很多年以前,摄影离普罗大众非常遥远。十年前,傻瓜相机开始风靡,游客几乎人手一个。智能手机出现以后,摄影更是走进千家万户...转载 2019-01-13 16:43:02 · 339 阅读 · 0 评论 -
Adam那么棒,为什么还对SGD念念不忘 (3)—— 优化算法的选择与使用策略
在前面两篇文章中,我们用一个框架梳理了各大优化算法,并且指出了以Adam为代表的自适应学习率优化算法可能存在的问题。那么,在实践中我们应该如何选择呢? 本文介绍Adam+SGD的组合策略,以及一些比较有用的tricks. 回顾前文:Adam那么棒,为什么还对SGD念念不忘 (1)Adam那么棒,为什么还对SGD念念不忘 (2) 不同优化算法的核心差异:下降方向 ...转载 2019-01-13 16:45:07 · 984 阅读 · 0 评论 -
解析注意力模型
前言这里学习的注意力模型是我在研究image caption过程中的出来的经验总结,其实这个注意力模型理解起来并不难,但是国内的博文写的都很不详细或说很不明确,我在看了 attention-mechanism后才完全明白。得以进行后续工作。这里的注意力模型是论文 Show,Attend and Tell:Neural Image Caption Generation with Visual...原创 2019-01-13 16:53:00 · 240 阅读 · 0 评论 -
CVPR 2018 论文解读集锦
之前我们整理过视觉顶级会议CVPR2017的论文解读文章 和ICCV 2017 论文解读集锦,CVPR 2018已经公布了所有收录论文名单,为了能够让大家更深刻了解CVPR的论文,我们进行了一些CVPR 2018论文解读的整理,后续还会持续更新。 53.CVPR 2018|分割算法——可以分割一切目标(附各种分割总结)本文是对何恺明CVPR 2018的目标分割工作解读,同时作者基于时间...转载 2019-01-13 17:09:43 · 471 阅读 · 0 评论 -
Center Loss的Pytorch实现
Center Loss的Pytorch实现开始结果在自己的项目中使用中心损失函数Center Loss的Pytorch实现: Wen et al. A Discriminative Feature Learning Approach for Deep Face Recognition. ECCV 2016.这个损失函数也被使用在: deep-person-reidgithub项目:https...原创 2019-01-13 18:20:41 · 11121 阅读 · 11 评论 -
卷积神经网络反向传播理论推导
本文首先简单介绍CNN的结构,并不作详细介绍,若需要了解推荐看CS231n课程笔记翻译:卷积神经网络笔记。本文只要讲解CNN的反向传播,CNN的反向传播,其实并不是大多所说的和全连接的BP类似,CNN的全连接部分的BP是与它相同,但是CNN中卷积--池化、池化--卷积部分的BP是不一样的,仔细推导,还是有很多细节地方需要思考的,比如1、在前向传播的过程中,卷积层的输入,是通过卷积核与前一层的输出特...转载 2019-01-18 21:19:09 · 343 阅读 · 0 评论 -
机器学习基本概念[持续补充]
损失函数(loss function)与代价函数(cost function)等价,是一个意思: 用来度量一次预测错误的程度.比如常用的0-1损失函数,平方损失函数,绝对损失函数,对数损失函数(即对数似然损失函数).目标函数(object function)与风险函数等价,是一个意思: 度量平均意义下模型的好坏,如期望损失(损失函数的期望)或经验损失(训练集的平均损失)或结构风险(在经验风...原创 2019-01-19 10:11:18 · 156 阅读 · 0 评论 -
lintel安装成功记与血泪史
1. 简介:最近需要将视频文件直接用于深度模型训练的输入,而不是像之前那样先将视频文件提取成单帧保存下来,因为这样做会出现几个问题,一个是要使用ffmpeg命令,将耗费数小时的时间提取帧,另一个是需要而外的存储空间,还有就是训练代码在加载图片时存在很大的IO操作,会影响训练的效率。因此,有没有一个方法,可以直接将视频文件作为训练数据,但又不会出现以上诸多问题呢,lintel就是为了解决这个问题...原创 2019-04-27 15:48:22 · 2145 阅读 · 7 评论