- 博客(111)
- 资源 (9)
- 收藏
- 关注

原创 凸优化学习系列笔记
最近闲暇时间又重温了一遍《凸优化》,颇有感触。借此机会搜罗了一番优化相关的书籍,整理了优化学习路径。如下:入门:《Convex Optimization Algorithms and Complexity》入门:《Optimization Methods for Large-Scale Machine Learning》从机器学习角度,年代比较新初级:《Convex Optimizati...
2017-06-01 09:28:46
1057
1
原创 深度学习Transformer(七)——Swin Transformer Hierarchical Vision Transformer using Shifted Windows
针对如何
2021-07-24 16:27:41
461
1
原创 深度学习Transformer(六)——Token to Token Vit Training Vision Transformers from Scratch on ImageNet
tokens根据
2021-07-24 16:25:50
1593
原创 深度学习Transformer(五)——Deit Training data efficient image transformers & distilation through attention
Vit一样的结构,现在不需要额外的数据训练了,用数据增强以及CNN作为老师蒸馏。
2021-07-24 16:22:40
516
1
原创 深度学习Transformer(四)——Visual Transformers Token-based Image Representation and Processing for CV
ResNet提取特征,然后加上transformer
2021-07-24 16:20:16
724
原创 深度学习Transformer(三)——Vit An Image is Worth 16x16 Words Transformers for image Recognition at Scale
Vit
2021-07-24 16:17:48
314
原创 深度学习Transformer(一)-Attention is All you need
最近神经网络结构Transformer非常流行,先后席卷了NLP和CV,大有取代CNN一统天下之势。 Transformer中文名是变形金刚的意思。
2021-07-24 16:13:33
649
原创 深度学习之生成式模型
机器学习模型分生成式模型(Generative Models)和判别式模型(Discriminative Models)。判别式模型就是给出一个判断,比如是哪个类别,是多少值。也就是说,判别式模型给出的是一个值。为什么需要生成式模型?因为有时候不想要一个值,我们想学习一个分布(Distribution),这个时候就需要生成式模型。总之,生成式模型就是学习到一个分布。 如何表示一个分布?可以用概率密度函数来表示。所以当然可以设计一个模型去学习一个概率密度函数。有了概率密度函数...
2021-07-18 21:34:14
6340
2
原创 深度学习之动态神经网络
最近,动态神经网络(Dynamic DNN)的相关工作挺多。动态神经网络,是指神经网络在推理的时候,计算链路不是固定的,而是根据输入的不同有不同的计算链路。举例来说,有些图片比较复杂,就多通过一些层;有些图片比较简单,可能几层就输出结果了。这个过程就像路由一样,根据输入数据的复杂程度自适应选择合适的计算链路。 2019年CondConv的工作CondConv: Conditionally Parameterized Convolutions for Efficient In...
2021-07-18 21:08:08
4334
原创 深度学习之后处理量化
后处理量化(Post-training Quantization)是指在模型训练完之后,直接对权重做量化,不需要重新训练模型或者用数据去Finetune。这种方式的优点是泛化性比较好,不依赖于特定的网络结构和数据,任何模型都可以使用。2018年谷歌的量化白皮书Quantizing deep convolutional networks for efficient inference_A whitepaper对模型做了int8量化,量化的方式比较简单,但有很多实验结果可以参考,有mobilenet的量化结
2021-07-18 20:45:24
752
原创 深度学习之高效神经网络
深度学习发展到今天,神经网络的规模越来越大。在CV这边,大家用的模型还没那么大,Resnet 101也就不到1亿的参数。但是在NLP领域,大模型层出不穷,BERT有3.4亿参数,到了Megatron有80亿参数,而Turing NLG有170亿参数,PLUG有270亿参数,GPT3达到1750亿参数,最新的模型Switch Transformer已经高达万亿参数。压缩深度学习模型一直是研究热点。主要的压缩手段有:设计手工设计简明的模型结构以及NAS; 剪枝; 蒸馏; 量化在这些技术中,个人不
2021-07-18 20:23:23
283
原创 LeetCode--2. 两数相加
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807解答...
2018-07-24 17:57:51
253
原创 LeetCode--29. 两数相除
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3 输出: 3 示例 2:输入: dividend = 7, divisor = -3 输出: -2 说明:被除数和除数均...
2018-07-24 17:56:06
406
原创 LeetCode--[字符串]8. 字符串转整数 (atoi)
实现 atoi,将字符串转为整数。在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。当字符串中的第一个非空字...
2018-07-24 17:54:06
283
原创 LeetCode--[广度优先搜索]675. 为高尔夫比赛砍树
你被请来给一个要举办高尔夫比赛的树林砍树. 树林由一个非负的二维数组表示, 在这个数组中:0 表示障碍,无法触碰到. 1 表示可以行走的地面. 比1大的数 表示一颗允许走过的树的高度. 你被要求按照树的高度从低向高砍掉所有的树,每砍过一颗树,树的高度变为1。你将从(0,0)点开始工作,你应该返回你砍完所有树需要走的最小步数。 如果你无法砍完所有的树,返回 -1 。可以保证的是,没...
2018-07-24 17:51:34
1160
原创 LeetCode--[广度优先搜索]864. 获取所有钥匙的最短路径
给定一个二维网格 grid。 “.” 代表一个空房间, “#” 代表一堵墙, “@” 是起点,(”a”, “b”, …)代表钥匙,(”A”, “B”, …)代表锁。我们从起点开始出发,一次移动是指向四个基本方向之一行走一个单位空间。我们不能在网格外面行走,也无法穿过一堵墙。如果途经一个钥匙,我们就把它捡起来。除非我们手里有对应的钥匙,否则无法通过锁。假设 K 为钥匙/锁的个数,且满足 1 ...
2018-07-24 17:48:17
1213
原创 LeetCode--[广度优先搜索] 847. 访问所有节点的最短路径
847. 访问所有节点的最短路径给出 graph 为有 N 个节点(编号为 0, 1, 2, …, N-1)的无向连通图。 graph.length = N,且只有节点 i 和 j 连通时,j != i 在列表 graph[i] 中恰好出现一次。 返回能够访问所有节点的最短路径的长度。你可以在任一节点开始和停止,也可以多次重访节点,并且可以重用边。示例 1:输入:[[1,2,3]...
2018-07-24 17:44:34
1624
2
原创 【视频动作识别】Cvpr_2018_Attend and Interact_Higher-Order Object Interactions for Video Understanding
在动作识别领域,人跟物体的交互信息是非常重要的,一个动作的完成包含了多个物体与人的复杂交互。以往的工作很少考虑到这样复杂的交互关系。这篇文章要做的就是对视频中的多个物体的交互建模,利用这样的信息来提高动作识别的准确率。如何对物体之间的交互建模物体之间的交互可以通过物体之间的重叠来判断,如果两个物体重叠了,那么说明它们在这个动作发生的时候有一些密切的交互信息。而物体重叠的判断可以通过各自的特...
2018-07-01 22:06:01
2742
1
转载 Python与C混编的调试
Python作为一门脚本语言,让程序员的开发效率变得非常高。但相对来说,程序执行的效率就比不上C、C++等编译型语言了。对此,可以做一个“妥协”,即把效率影响较大的函数用C来实现,Python代码中调用这些函数,实现开发效率和运行效率的平衡。代码编写 我们通过一个例子来了解python和C混合编程的步骤。例子中用C语言实现两个整数相加,在Python中调用这个函数并输出结果。 首先,用C实...
2018-06-02 15:18:11
3434
原创 学习Caffe(六)解决Ubuntu16.04安装Matcaffe错误
由于Ubuntu16.04默认的gcc/g++版本是5.4,而matlab支持的gcc/g++版本是4,所以直接用系统的gcc/g++编译matcaffe会出错. 期间尝试把matlab自带的一些动态库改成系统的,但是还是出错,说明不对. 最终,决定大改.把系统的gcc/g++改成4.85,然后手动编译caffe的依赖项,用gcc/g++4.85编译: - opencv - libpr...
2018-05-15 00:08:39
454
原创 Ubuntu配置中文输入法
Ubuntu的中文输入法:sogou拼音 Fcitx谷歌拼音https://code.google.com/archive/p/libgooglepinyin/wikis/INSTALL.wikiRime https://github.com/rime/home/wiki/RimeWithIBusIBus拼音:sudo apt-get install ibus-pinyin IB...
2018-03-28 14:35:04
964
原创 解决Ubuntu乱码和matlab乱码
Windows编码格式是Unicode,而Ubuntu编码格式是UTF-8,所以文件从FTP上传到Ubuntu会乱码。 解决方法是在ftp里设置成UTF-8格式: matlab中文乱码换一种支持中文的字体...
2018-03-28 13:53:09
606
转载 Linux搭建gitlab服务器
https://blog.youkuaiyun.com/u011241606/article/details/51471367
2018-03-26 22:19:42
3055
原创 算法导论学习笔记(二)排序和顺序统计量
总结各种排序算法,时间复杂度与空间复杂度,优缺点等。堆排序堆排序的时间复杂度是θ(nlogn)θ(nlogn)\theta(n\log n),堆排序具有空间原址性。堆是一个数组,可以看成一棵近似的完全二叉树。除了最底层之外,该树完全填满,给定一个节点i,可以很容易地计算其父节点为floor(i/2),左子节点为2i,右子节点为2i+1.最大堆是指堆中最大元素存在根节点。建...
2018-03-25 19:29:29
414
原创 优化理论(三)凸函数、拟凸函数和保凸运算
这一节主要学习凸函数的定义以及性质。了解保凸运算,以及上镜图与下水平集等。这些基础知识看似零乱,然而却是后面的基础。特别是,在实际应用中如果我们能把一个问题转化为凸优化问题,是非常好的一步。而能够这样做的前提,是知道基本的函数的凸性以及有哪些保凸运算。上镜图有助于我们从集合的角度理解这个函数为什么是凸的(集合的保凸运算);水平集是以函数的形式表示集合,类似于等高线,在历史上是重要的方法。这里我们通...
2018-03-23 18:21:11
15328
原创 优化理论(二)凸集、保凸运算、广义不等式与对偶锥
本节主要讲凸集的概念以及保凸运算,这对于判断优化问题是否是凸的非常有帮助。这一节有一部分概念比较抽象,需要仔细研读。凸集(Convex Set)凸集通过集合的任意两个点的线段还在集合中,即仿射集(Affine Set)通过集合的任意两个点的直线还在集合中线性方程组的解集是一个仿射集。凸组合(Convex Combination)凸包(...
2018-03-22 18:11:38
8548
原创 优化理论(一)线性优化、组合优化与网络流问题
本节主要学习线性优化问题。线性优化是最简单的一种优化问题。在我们系统地学习凸优化之前,先回顾下线性优化的知识。虽然最优化可以追溯到十分古老的极值问题,但是它成为一门独立的学科是在本世纪40年代末,是在求解一般线性规划问题的单纯形法提出之后。线性优化问题(Linear Optimization Problems)目标函数是线性的且等式约束和不等式约束都是线性的:minimize&...
2018-03-22 11:56:20
4742
原创 Markdown导出成多种格式word
Markdown编辑器推荐Typora,支持导出多种格式,包括word。导出成word需要安装一个paddoc。这样就可以用markdown做笔记,发布到博客上,还可以导出成word,存到onenote笔记本里。...
2018-03-21 22:24:48
2471
原创 矩阵论(七)矩阵的特征分析
矩阵的特征值刻画矩阵的奇异性、反映矩阵所有对角元素的结构、刻画矩阵的正定性,是矩阵的固有属性。特征问题与特征方程矩阵的本质是对变换的描述。矩阵的特征值和特征向量刻画了变换的特性。线性算子的特征值和特征向量若非零向量uuu作为线性算子LLL 的输入时,所产生的输入与输出相同,最多相差一个常数因子,即L[u]=λu,u≠0L[u]=λu,u≠0L[u] = \lambd...
2018-03-21 21:55:27
5108
原创 STL源码剖析(三)迭代器
迭代器的设计思维STL的中心思想: 把数据容器和算法分开,彼此独立设计,最后以迭代器把他们胶合在一起。迭代器是一种智能指针主要讲实现迭代器需要做哪些工作:包括重载operator*和operator->。 要设计容器的迭代器,必须要了解容器的细节,所以迭代器的开发工作是和容器一起的。交由容器设计者设计。迭代器相应类型(associated type)难题 假...
2018-03-20 01:29:13
230
原创 STL源码剖析(二)空间配置器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...
2018-03-20 01:25:24
170
原创 STL源码剖析(一)STL简介
最近看了一点《STL源码剖析》这本书,觉得写得很不错,写个博客记录下。 本篇主要介绍STL的历史、意义。STL简介STL是C++的一个标准程序库,其具有划时代的意义。因为STL包含了先进的技术和编程思想。STL价值在于:STL提供了一套极具实用的组件,并带来了高层次的、以泛型为基础的系统化、条理化的软件组件分类学STL是一个抽象的概念库,这些抽象概念包含:迭代器、二元函数、序...
2018-03-20 01:23:46
330
原创 C++实践(六):基于RSA与HMAC的数字签名算法及其原理
RSARSA算法的步骤如下:1、选择两个不同的大素数p与q 2、计算n=p*q 3、计算∅(n)=(p-1)(q-1) 4、选择整数e gcd(e, ∅(n))=1 1基于RSA与HMAC的数字签名算法及其原理数字签名是一种认证机制,它使得消息的产生者可以添加一个起签名作用的码字。通过计算消息的Hash值并使用产生者的私钥加密Hash值来生成签名。签名保证了消息来源和...
2018-03-14 12:45:44
3886
原创 C++实践(五)C++实现认证算法:基于SHA-512的HMAC
基于SHA-512的HMAC算法SHA是使用最广泛的Hash函数。其家族有SHA-1,SHA-2(包括SHA-256/SHA-384/SHA-512)。SHA1与SHA2都使用了同样的迭代结构和模算术与二元逻辑操作。在本实验中,我们采用SHA-512。SHA-512算法SHA-512的逻辑算法的输入为长度小于128位的信息(实际实现中我们假定输入的信息长度小于64位), ...
2018-03-14 12:38:36
6693
4
原创 C++实践(四):C++实现AES-CMAC算法
AES-CMACAES-CMAC使用了高级加密标准作为组分。为了产生一个消息认证码,CMAC需要一个密钥,消息message及消息的长度length作为输入,输出是消息认证码。 AES-CMAC的核心是CBC-MAC。对于待加密消息M,应用CBC-MAC算法。在CMAC操作中有两种情况: 如果输入消息长度等于Block的整数倍,最后的Block M_n需要先于K1异或再进行处理; 如果输...
2018-03-14 12:16:28
13701
16
原创 C++实践(三):C++实现加密算法AES
本篇主要讲2015年写的加密算法。包括:AES,AES-CMAC,HMAC,基于RSA与HMAC的数字签名算法。当时大概写了2天。哈哈!AES算法AES是一个对称加密标准,用以取代DES的商业应用。其分组长度为128位,192位或者256位。 AES不同于典型的Feistel结构,在每一轮都使用代替和混淆来将整个数据分组作为一个单一的矩阵处理。对AES-128来说,输入的密钥被扩...
2018-03-14 12:06:49
23937
11
原创 C++实践(二)C++实现基于curl的RTSP通信
这篇记录我在2015年的时候写的一个从远程摄像头服务器读取视频流的工作。先介绍RTSP通信部分。RTSP协议RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,RTSP的作用相当于流媒体服务器的远程控...
2018-03-14 11:48:48
6371
5
原创 C++实践(一)C++实现前馈神经网络
本篇主要讲2016年的时候写的一个神经网络,顺便复习以前的知识。需求想实现一个前馈神经网络,基于C++,性能会比较好。主要是因为当时Caffe等库依赖太多了,又没有其他开源的好用,顺便复习下C++。架构设计在现行的神经网络库里,Caffe采用以层为单位的抽象,优点是逻辑清晰,实现简便,但是需要手动实现梯度计算;而Tensorflow是以计算图为基础,封装好了每个算子,采用这...
2018-03-14 11:32:08
1058
Tensorflow斯坦福课程课件和笔记大礼包
2018-03-19
Linear Estimation 线性估计
2015-10-03
Linear Estimation
2015-10-03
C语言 指针详解
2014-12-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人