自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 【用Python学习Caffe】0. 前言及介绍

0.前言及介绍老实说现在的Caffe已经不够流行了(说到这里,我有点无力了,近年来深度学习发展实在是太快了,完全跟不上学习脚步了,刚刚Caffe有点了解后,马上就要跟不上时代了=_=||)。如果对于现在的我来说,我更愿意推荐去学习Tensorflow或者是Pytorch,甚至是Caffe2。因为这...

2017-06-22 21:50:15 9432 2

原创 【深度剖析HMM(附Python代码)】1.前言及隐马尔科夫链HMM的背景

1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别、文本翻译、序列预测、中文分词等多个领域。虽然近年来,由于RNN等深度学习方法的发展,HMM模型逐渐变得不怎么流行了,但并不意味着完全退出应用领域,甚至在一些轻量级的任务中仍有应用。本系列博客将...

2017-04-27 12:24:50 47368 9

原创 编写C语言版本的卷积神经网络CNN之一:前言与Minst数据集

卷积神经网络是深度学习的基础,但是学习CNN却不是那么简单,虽然网络上关于CNN的相关代码很多,比较经典的是tiny_cnn(C++)、DeepLearnToolbox(Matlab)等等,但通过C语言来编写CNN的却比较少,本人因为想在多核DSP下运行CNN,所以便尝试通过C语言来编写,主要参考...

2016-06-29 22:12:07 51344 41

原创 (多核DSP快速入门)0.前言+CCS的安装

多核DSP的快速入门,CCSv5的学习,DSP教程

2016-04-25 22:40:10 11769 0

原创 【用Python学习Caffe】8. 网络结构的权重共享量化

8. 网络结构的权重共享量化网络权重共享量化也是一类重要的网络压缩方法,其本质在于先通过聚类方法得到该层权重的聚类中心,然后通过聚类中心值来表示原权重值。因此权重值并不是由32位的浮点数来表示,而是由其对应的聚类中心的序号表示,如果聚类级别为8位,此时权重值只需要用8位就能表示。对于网络权重量化也...

2017-06-22 22:28:01 5016 5

原创 【用Python学习Caffe】7. 网络结构的修剪

7. 网络结构的修剪网络结构的压缩是近年来研究热点,接下来的两节,我们将介绍Deep Compression的两个策略网络修剪和网络权重共享量化的实现方法,我们通过mnist的LeNet5作为例子,而其他网络的实现也是类似的。关于Deep Compression的原理,可以参见其论文:Han S,...

2017-06-22 22:23:06 6579 8

原创 【用Python学习Caffe】6. 权重预设、预训练及微调

6. 权重预设、预训练及微调通过上一节,我们将得到solver文件,得到该文件后,进行网络的训练及测试将变得非常简单。 在通过solver = caffe.SGDSolver(solver_proto)初始化解决器后,训练一般有两种方式,一是通过solver.solve()直接进行训练,二是通过...

2017-06-22 22:19:16 4362 0

原创 【用Python学习Caffe】5. 生成solver文件

5. 生成solver文件网络训练一般是通过solver来进行的。对于caffe来说,其是通过solver文件来生成solver训练器进行网络训练及测试的,该solver文件中包含了训练及测试网络的配置文件的地址,及相关训练方法及一些训练的超参数,该文件一般不是很大,可以直接在一些solver.p...

2017-06-22 22:17:28 2905 0

原创 【用Python学习Caffe】4. 设计自己的网络结构

4. 设计自己的网络结构通过前文的例子,我们都知道了Caffe的网络都是一个prototxt的网络结构配置文件定义的,该文件可以用文本工具打开,打开后,我们可以看到如下结构: layer { name: "data" type: "Dat...

2017-06-22 22:15:50 3922 0

原创 【用Python学习Caffe】3. 图像训练测试数据集LMDB的生成

3. 图像训练测试数据集LMDB的生成Caffe深度学习网络在训练和测试中所使用的的数据集,并不是一张张的图像,而将图像集打包成LMDB或者LevelDB的数据库形式,这样做好处是能提高读取图像的时间。而本节的目的在于介绍如何将图像数据生成可用于测试和训练LMDB格式的数据集。3.1 原始图像的采...

2017-06-22 22:12:38 5265 0

原创 【用Python学习Caffe】2. 使用Caffe完成图像目标检测

2. 使用Caffe完成图像目标检测本节将以一个快速的图像目标检测网络SSD作为例子,通过Python Caffe来进行图像目标检测。 必须安装windows-ssd版本的Caffe,或者自行在caffe项目中添加SSD的新增相关源代码. 图像目标检测网络同图像分类网络的大体原理及结构很相似,...

2017-06-22 22:08:21 7618 1

原创 【用Python学习Caffe】1. 使用Caffe完成图像分类

1. 使用Caffe完成图像分类本节将以著名的图像分类深度学习网络AlexNet为例子,通过Python Caffe来进行图像分类。虽然不同的网络的结构是不样的,但其大体的过程都是一致的,因此大家可以通过这个例子,熟悉如何利用Caffe进行图像分类。关于AlexNet的原理,可以参见其论文:Kri...

2017-06-22 22:01:47 8271 5

原创 【深度剖析HMM(附Python代码)】4.HMM代码测试及hmmlearn介绍

相信经过上几节的说明,大家对于HMM应该有比较好的了解,也许大家已经自己试着运行代码了。 这一节主要介绍下另一个著名的HMM的Python库——hmmlearn,这个库提供了三个HMM模型(高斯HMM、离散HMM及高斯混合HMM),比我的代码速度更快,而且更有稳定,而且其还提供了相应的教程和API...

2017-04-27 14:35:54 9806 1

原创 【深度剖析HMM(附Python代码)】3.隐马尔科夫链所解决的问题

通过隐马尔科夫链,有以下几方面功能: 1. 解码问题  已知某一序列,找到最可能的隐藏状态序列(即所谓的解码问题,利用维比特算法来解决) 解码过程的相关python代码 def decode(self, X, istrain=True): ...

2017-04-27 13:51:53 4496 1

原创 【深度剖析HMM(附Python代码)】2.隐马尔科夫链HMM的EM训练过程

隐马尔科夫链HMM的参数θ的EM训练过程 现在回到前一节最后提出的参数θ的最大似然函数上来,先对其做个对数变换,做对数变换是考虑到序列X的概率计算公式中包含了连乘,为了方便计算同时避免序列X的概率过小,因此对其做了对数变换。 的期望计算中,对于序列X是已知的,而的概率是由旧参数值 ...

2017-04-27 13:28:43 7394 6

原创 【机器学习算法笔记】7. 基于信息论的网络

【机器学习算法笔记】7. 基于信息论的网络根据最大互信息原则作为网络的最优化目标函数。7.1 最大互信息原则(相关) (a) (b) (c) (d)7.2 信息论相关定义7.2.1 信息量7.2.2 熵(微分熵) 最大熵原则:当根据不完整的信息作为依据进行推断时...

2017-03-29 17:55:22 1537 0

原创 【机器学习算法笔记】6. 降维与主分量分析(PCA)

【机器学习算法笔记】6. 降维与主分量分析(PCA)6.1 PCA算法特征选择问题是指将数据空间变换到特征空间,我们希望设计一种变换使得数据集由维数较少的有效特征来表示。 PCA是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方...

2017-03-29 10:35:43 2999 0

原创 【机器学习算法笔记】5. 自组织映射SOM

【机器学习算法笔记】5. 自组织映射SOM自组织映射是一类非监督学习算法 自组织原则: 1、自增强:如果两个神经元是同时激活的,则突触强度会选择性地增强;如果是异步激活的,突触强度会减弱 2、竞争原则:可用资源的局限使得最强健增长的突触是以其他神经元作为代价的 3、协作:在神经元级别中,对突触权...

2017-03-29 10:14:38 3092 1

原创 【机器学习算法笔记】4. 支持向量机(SVM)

【机器学习算法笔记】4. 支持向量机(SVM)给定训练样本,支持向量机建立一个超平面作为决策曲面,使得正例和反例之间的隔离边缘最大化4.1 线性模型考虑到用于分离超平面的决策曲面: x到超平面的距离: 现在我们考虑到要寻找一个超平面,使得全体x到超平面的距离都大于1:(这里d=1或...

2017-03-29 10:01:17 1397 0

原创 【机器学习算法笔记】3. 核方法和径向基(RBF网络)

【机器学习算法笔记】3. 核方法和径向基(RBF网络)在涉及非线性可分模式分类中,多层感知器是通过神经元的非线性来达到的,这个非线性主要是通过使用Sigmoid函数来获得的。 这一节介绍另一种通过混合方式来解决非线性可分模式问题: 1、将给定非线性集合转换为线性集合 2、通过最小二乘估计来解...

2017-03-28 19:49:37 1060 0

原创 【机器学习算法笔记】2. 学习算法与最小均方算法(LMS)

【机器学习算法笔记】2. 学习算法与最小均方算法(LMS)最小均方算法是一个非常流行的在线学习算法。其是建立在自适应滤波和自适应调整权重上的。2.1 迭代下降思想三种以迭代下降思想为基础的无约束最优化方法:2.1.1 最速下降法:在最速下降法中,对权值向量的调整是在最速下降的方向进行的,即它是与梯...

2017-03-28 19:36:42 1869 0

原创 【机器学习算法笔记】1. 回归器模型

【机器学习算法笔记】1. 回归器模型回归算法是试图采用对误差的衡量来探索变量之间的关系的一类算法。回归算法是统计机器学习的利器。常见的回归算法包括:最小二乘法(线性回归),逻辑回归,逐步式回归,多元自适应回归样条等。1.1 线性回归器所谓线性回归:对于一组输入值X=[x1,x2,…,xn],存在输...

2017-03-28 19:15:52 3873 0

原创 【机器学习算法笔记】0. 机器学习算法分类

【机器学习算法笔记】0. 机器学习算法分类0.1 凸优化问题凸优化是指一种比较特殊的优化,是指求取最小值的目标函数为凸函数的一类优化问题。其中,目标函数为凸函数且定义域为凸集的优化问题称为无约束凸优化问题。而目标函数和不等式约束函数均为凸函数,且定义域为凸集的优化问题为约束优化问题。 凸优化问题...

2017-03-28 18:42:20 1929 0

原创 【C++研发面试笔记】22. 常用算法-字符串查找算法

22. 常用算法-字符串查找算法22.1 KMP算法,KMP字符串匹配算法,BM算法,Rabin-Karp算法,有限自动机算法,Boyer-Moore字符串搜索算法。KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore)

2016-10-04 13:36:31 2432 0

原创 【C++研发面试笔记】21. 常用算法-STL中常用算法函数

【C++研发面试笔记】21. 常用算法-STL中常用算法函数1、for_each(容器起始地址,容器结束地址,要执行的函数) 指定函数依次对指定范围内所有元素进行迭代访问,返回所指定的函数类型。2、查找find InputIterator find (InputIterator first, ...

2016-10-04 11:24:17 1257 0

原创 【C++研发面试笔记】20. 常用算法-路径搜索算法(图算法)

【C++研发面试笔记】20. 常用算法-路径搜索算法(图算法)20.1 BFS与DFS 最大流最小割定理,最大流问题,最小生成树问题,Prim算法,Dijkstra算法是典型的单源最短路径算法。Floyd-Warshall算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径...

2016-10-04 11:19:10 6899 0

原创 【C++研发面试笔记】19. 常用算法-排序算法

【C++研发面试笔记】19. 常用算法-排序算法19.1 排序算法分类比较排序和非比较排序: 常见的排序算法都是比较排序,非比较排序包括计数排序、桶排序和基数排序,非比较排序对数据有要求,因为数据本身包含了定位特征,所有才能不通过比较来确定元素的位置。 比较排序的时间复杂度通常为O(n^2)或...

2016-10-03 23:12:04 2865 1

原创 【C++研发面试笔记】18. 常用算法-查找算法

【C++研发面试笔记】18. 常用算法-查找算法查找算法一般是跟排序算法相关,本节主要介绍五类常用查找算法。其中,顺序查找是纯粹的查找方法,二分查找是依据已排序序列进行的快速查找方法,后三种都多少涉及到先排序再查找的策略。18.1 顺序查找算法顺序查找没有什么特别之处,就是从头到尾搜索一遍,算法复...

2016-10-03 21:40:27 834 0

原创 【C++研发面试笔记】17. 基本数据结构-图结构

【C++研发面试笔记】17. 基本数据结构-图结构17.1 拓扑排序17.1.1 拓扑排序定义对有向无环图G进行拓扑排序,是指将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。这样的线性序列称为满足拓扑次序的序列,简称拓扑序列。得到...

2016-10-03 21:24:45 721 0

原创 【C++研发面试笔记】16. 基本数据结构-队列queue与栈stack

【C++研发面试笔记】16. 基本数据结构-队列queue与栈stack16.1 STL中stack实现stack 模板类的定义在头文件中。栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得...

2016-10-03 21:01:22 959 0

原创 【C++研发面试笔记】15. 基本数据结构-字符串string

【C++研发面试笔记】15. 基本数据结构-字符串string字符串是一类非常常见的数据结构,本篇主要介绍在STL中的string容器和一些标准库中常用的相关函数。15.1 STL的string#include <string> 在标准 C++ 中,字符串类 string 由 C++...

2016-10-03 19:12:28 951 0

原创 【C++研发面试笔记】14. 基本数据结构-查找表与并查集

【C++研发面试笔记】14. 基本数据结构-查找表与并查集,Hash表,哈希表、STL,set, map, unordered_map, unordered_set

2016-10-03 18:47:15 1127 0

原创 【C++研发面试笔记】13. 基本数据结构-哈夫曼树、树堆及其他树簇

【C++研发面试笔记】13. 基本数据结构-哈夫曼树、树堆及其他树簇,斐波那契堆,van Emde Boas树,字典树,线段树等

2016-10-03 17:50:45 1213 0

原创 【C++研发面试笔记】12. 基本数据结构-B树簇

【C++研发面试笔记】12. 基本数据结构-B树簇本节所说的B树并不是前面所说的二叉树(Binary Tree),而一类多路搜索树(B-Tree),其是为了解决二叉树只有两路的情况而提出,广泛应用于文件搜索(比如文件的目录树)。这类树主要分为B-树、B+树、B*树等等。12.1 B-树12.1.1...

2016-10-03 14:13:19 841 0

原创 【C++研发面试笔记】11. 基本数据结构-红黑树RBT

【C++研发面试笔记】11. 基本数据结构-红黑树RBT上一节,我们提到了为了解决二叉查找树不平衡问题,我们引入了AVL树,AVL是严格平衡树,但在增加或删除节点时,需要非常多的旋转操作。因此这一节我们介绍红黑树,红黑是弱平衡的,用非严格的平衡来换取增删节点时候旋转次数的降低,其在在增加或删除节点...

2016-10-03 12:09:57 2140 0

原创 【C++研发面试笔记】10. 基本数据结构-平衡二叉搜索树AVL

【C++研发面试笔记】10. 基本数据结构-平衡二叉搜索树AVL10.1 AVL的定义定义:平衡二叉树或为空树,或为如下性质的二叉排序树: (1)左右子树深度之差的绝对值不超过1; (2)左右子树仍然为平衡二叉树. 平衡因子BF=左子树深度-右子树深度. 平衡二叉树每个结点的平衡因子只能是...

2016-10-02 21:52:02 1061 0

原创 【C++研发面试笔记】9. 基本数据结构-二叉查找树BST

【C++研发面试笔记】9. 基本数据结构-二叉查找树BSTBST树即二叉搜索树,其满足如下条件: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;9.1 BST树的搜索 从...

2016-10-02 20:29:31 669 0

原创 【C++研发面试笔记】8. 基本数据结构-二叉堆

【C++研发面试笔记】8. 基本数据结构-二叉堆最大堆、最小堆分别指堆顶为最大或最小元素的堆,也叫大顶和小顶堆。堆是一种基本的抽象数据类型,一般用二叉树表示并且递归定义,堆顶为树的根,保证树或者子树的根永远比子节点大或者小。 堆的一个经典的实现是完全二叉树。这样实现的堆成为二叉堆。完全二叉树是增...

2016-10-02 20:14:38 617 0

原创 【C++研发面试笔记】7. 基本数据结构-单链表

【C++研发面试笔记】7. 基本数据结构-单链表7.1 STL中的ListLists将元素按顺序储存在链表中。与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢(其也可以通过[]的方式来访问,不过速度较vector慢了许多)。7.1.1 List相关成员函数/* 插入与删...

2016-10-02 19:56:54 779 0

原创 【C++研发面试笔记】6. 基本数据结构-数组

【C++研发面试笔记】6. 基本数据结构-数组  数组可以说是我们最初接触到的数据结构,其结构非常简单,主要是由相同数据类型的元素数据按一定顺序排列的集合,这个集合用一个名字命名,称为数组名,而通过编号来区分集合中的元素,称为下标。数组主要分为两类:静态数组和动态数组 两者的区别如下: 对静态数...

2016-10-02 19:31:27 1281 0

提示
确定要删除当前文章?
取消 删除