- 博客(42)
- 资源 (16)
- 收藏
- 关注
原创 稀疏矩阵的压缩存储方法
1 什么是稀疏矩阵: 在矩阵中,我们常见的都是稠密矩阵,即非0元素数目占大多数时;若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。与之相区别的是,如果非零元素的分布存在规律(如上三角矩阵、下三角矩阵、对角矩阵),则称该矩阵为特殊矩阵。下图1为一个稀疏矩阵的示例 ...
2019-06-02 22:26:51 39446 2
原创 MXnet转caffe
mxnet虽好,但是mxnet框架还是有点小众,MXnet现在越来越受欢迎了,不过现在要把mxnet训练的模型部落地到移动端,有必要在Inference阶段将其转换为其他框架,以便后续统一部署和管理。Caffe作为小巧灵活的老资格框架,使用灵活,部署方便,所以尝试将mxnet训练的mobilefacenet模型转换为Caffe。这里简单记录用mxnet训的mobilefacenet模型转换为Caf...
2019-05-30 14:35:33 2868 6
原创 tensorflow的量化教程(2)
Google提供的quantization-aware-trainning的量化训练方法,具体可以参考https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/quantize对应的论文https://arxiv.org/abs/1712.05877还有这个白皮书https://arxiv.or...
2019-01-11 22:24:00 7878 37
原创 tensorflow的量化教程(1)
前段时间利用tensorflow的量化工具做了量化训练,精度损失很小,有时甚至比浮点模型精度更好一点,确实强大。利用tflite框架在3536上相比浮点模型有了2X左右的速度提升,现在做一个总结记录。https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/quantize,这是tensorflow的量化...
2018-09-10 12:02:00 14582 68
原创 arm-linux-gdb & gdbserver 远程调试工具的搭建与使用
由于嵌入式系统资源有限性,一般不能直接在ARM上进行调试,通常采用arm-linux-gdb+gdbserver的方式进行远程调试。Target端(ARM)使用 Gdbserver,host端(PC主机)使用arm-linux-gdb,双方最好统一编译工具链。在应用程序调试的时候,pc机上的arm-linux-gdb向开发板上的Gdbserver发出命令,接着ARM开发板上的gdbser...
2018-08-27 12:01:59 6942 1
原创 利用TVM优化ARM GPU上的移动深度学习
原文地址:https://tvm.ai/2018/01/16/opt-mali-gpu.html 随着深度学习的巨大成功,对移动设备部署深度神经网络的需求正在迅速增长。与我们在桌面平台上的工作类似,在移动设备中使用GPU可以同时提高推理速度和能效。但是,大多数现有的深度学习框架都不能很好地支持移动GPU。难点在于移动GPU架构和桌面GPU架构之间的差异。这意味着在移动GPU上进行优...
2018-08-09 19:28:54 6195
原创 神经网络模型量化论文小结
现在“边缘计算”越来越重要,真正能落地的算法才是有竞争力的算法。随着卷积神经网络模型堆叠的层数越来越多,网络模型的权重参数数量也随之增长,专用硬件平台可以很好的解决计算与存储的双重需求,但目前还不成熟,存在些亟待解决的问题,没能大规模商用。对模型进行参数量化的主要目的是减小模型存储体积,加速运算,能够将算法应用在通用的嵌入式移动平台。陆陆续续阅读了关于模型量化的论文,通过这篇博客做一个...
2018-07-22 13:25:54 28778 14
原创 【论文阅读笔记】-《Quantized Convolutional Neural Networks for Mobile Devices》
GitHub :https://github.com/jiaxiang-wu/quantized-cnnpaper :https://arxiv.org/abs/1512.06473 Quantized -CNN是一种卷积神经网络量化框架,在测试阶段可以进行计算加速和模型压缩。移动设备可以利用Quantized -CNN框架进行有效的时实图像分类,只有极小的准确性损失。文章测...
2018-07-12 10:54:37 710
原创 ubantu16.04 安装cmake3.11及简单使用
现在有好几种 Make 工具,例如GNU Make,QT 的qmake,微软的MS nmake,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。CMak...
2018-05-24 20:55:49 6939 1
原创 解决0xc000007b——应用程序无法正常启动
用VS2013写了一个64位.exe的应用程序,release后,将C:\Windows\SysWOW64\下的msvcp120.dll和mscr120.dll拷贝到.exe所在文件夹,并将文件夹移动到另一个没有runtime的win7 64位环境,运行后出现如下错误: 网上有一种说法是win7 64位System32里的dll为64位的,SysWOW64里的dll为3...
2018-05-17 17:50:02 8240 1
原创 ubantu16.04运行sudo apt-get update出现:Problem executing scripts APT::Update::Post-Invoke-
错误解决办法sudo pkill -KILL appstreamcliwget -P /tmp https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb https://launchpad.net/ubuntu/+archive/primary/+files/liba...
2018-05-16 09:24:46 751
原创 【论文阅读笔记】---《A Survey of Model Compression and Acceleration for Deep Neural Networks》
论文:A Survey of Model Compression and Acceleration for Deep Neural Networks 深度神经网络模型压缩与加速综述 摘要--深度卷积神经网络(CNN)目前在很多视觉识别任务中有非常良好的表现。然而,目前的深度卷积神经网络模型非常耗费计算资源和内存,面临着在终端部署和低延迟需求场景下难...
2018-05-03 14:27:17 5945
原创 【典型网络模型】LeNet5 模型
早在 1998 年,LeCun 等人就将卷积神经网络和工业相结合,将其发明的LeNet-5 网络广泛应用于当时美国大多数银行当中,用于识别支票上的手写数字。以输入层作为开端,中间掺杂了多个卷积层和池化层的组合,然后是若干个全连接层,最后是输出层,这是卷积神经网络最常见的网络结构。LeNet-5 是这种结构的代表,如下图: (0)INPUT层, LeNet-5 网络输入采用...
2018-05-01 17:56:07 2538
原创 可以ping通,xshell连接linux主机时,会出现错误:Could not connect to 'x.x.x.x' (port 22): Connection failed.
xshell连接linux主机时,会出现错误:Could not connect to '192.168.89.144' (port 22): Connection failed. 但是这时能ping通。通过查看资料,这种情况可能的原因主要有两种:A 桥接模式可以使路由器使用DHCP的方式分配IP,如果你的电脑所处的网络拓扑中没有路由器的话也是ping不通的。如果有路由器,因为防火墙导致无法连接...
2018-04-28 15:36:57 3562
原创 【论文阅读笔记】---二值神经网络(BNN)
现在神经网络一般采用浮点计算,需要较大的存储空间和计算量,严重阻碍在移动端的应用。二值化神经网络以其高模型压缩率和快计算速度的潜在优势,近些年成为深度学习的热门研究方向。本文就是对《Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or ...
2018-04-27 22:36:11 19173 7
转载 基于R-CNN的物体检测
原文地址:http://blog.csdn.net/hjimce/article/details/50187029作者:hjimce一、相关理论 本篇博文主要讲解2014年CVPR上的经典paper:《Rich feature hierarchies for Accurate Object Detection and Segmentation》,这篇文章的算法思想又被称之为:R-C
2018-01-12 15:32:28 210
转载 linux下静态库基本概念
一、基本概念1.1、什么是库 在 windows 平台和 linux 平台下都大量存在着库。 本质上来说库是一种可执行的二进制代码(但不可以独立执行),可以被操作系统载入内存执行。 由于 windows 和 linux 的平台不同(主要是编译器、汇编器和连接器 的不同),因此二者库的二进制是不兼容的。 本文仅限于介绍
2018-01-08 13:01:13 507
原创 卷积神经网络(CNN)学习笔记1:基础入门
卷积神经网络(Convolutional Neural Networks, CNN)是多层感知机(MLP)的变种。由生物学家休博尔和维瑟尔在早期关于猫视觉皮层的研究发展而来。由纽约大学的Yann LeCun于1998年提出。CNN本质上是一个多层感知机,其成功的原因关键在于它所采用的局部连接和共享权值的方式,一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。CNN是...
2018-01-05 10:00:10 1720
原创 linux多线程编程(2)
1.线程之间的同步与互斥 由于线程共享进程的资源和地址空间,因此对这些资源进行操作时,必须考虑到线程间资源访问的同步与互斥问题。 这里,主要介绍POSIX中的互斥锁和信号量。(1)互斥锁线程控制 互斥锁通过简单的加锁方式来控制对共享资源的原子操作,它提供一个可以在同一时间,只让一个线程访问资源的的操作接口。 互斥锁有两种状态,也就是上锁
2017-11-05 13:50:05 273
原创 linux 多线程编程(1)
1 什么是多线程? 每一个程序可以包含至少一个线程,这个线程称为主线程(main thread),如果我们不显示地创建线程,那我们的程序就是只有主线程的线程程序。当需要多个任务可以并行执行时,可以为每个任务启动一个线程,多个线程之间可以“并发”执行。 在介绍线程前先来用生活中最常见的一个小例子来理解什么是线程: 假如你去一家餐馆吃饭,那家餐
2017-11-04 19:23:20 317
转载 linux socket编程相关函数作用及参数详细分析
1、socket()函数int socket(int domain, int type, int protocol);参见/usr/include/bits/socket.hsocket函数对应于普通文件的打开操作。普通文件的打开操作返回一个文件描述字,而socket()用于创建一个socket描述符(socket descriptor),它唯一标识一个socket
2017-11-04 15:35:07 508
转载 linux socket 编程基础
最近看了一些网络编程的书籍,一直以来总感觉网络编程神秘莫测,其实网络编程入门还是很容易学的,下面这些代码是我在linux下编写的,已经运行过了,编译之后就可以运行了。有不足之处希望大家多多指出,共同学习交流。 套接字是一种进程间的通信的方法,不同于以往介绍的进程间通信方法的是,它并不局限于同一台计算机的资源,例如文件系统空间,共享内存或者消息队列。套接字可以认为是...
2017-11-04 14:56:11 214
原创 内存泄漏
C++内存泄漏及解决方法1.首先说到c++内存泄漏时要知道它的含义?内存泄漏(memory leak)是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。2.内存泄漏的后果? 最难捉摸也最难检测到的错误之一是内存泄漏,即未
2017-10-20 21:08:50 206
原创 程序编译与预处理
如果一个源程序由多个诸如A.c,B.h等的源文件组成,使用的编译链接器是如何根据这些文件生成可执行文件的?编译链接的机理到底是什么,这是本章要学习的内容。对C语言来说,除了掌握必要的语法机制外,学好预处理命令也是写出高质量代码的前提。 很多示例代码,实际上,哪怕是像Hello,World这样简单的示例程序,都要经过编辑、预处理、编译、链接4个步骤,才能变成可执行程序,鼠标双击就
2017-05-28 11:34:49 743
原创 mysql--事务
数据库事务的四个特性及含义数据库事务transanction正确执行的四个基本要素。ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就
2017-05-26 21:27:36 368
转载 mysql的查询、子查询及连接查询
一、mysql查询的五种子句 where(条件查询)、having(筛选)、group by(分组)、order by(排序)、limit(限制结果数) 1、where常用运算符: 比较运算符 > , ),>= , in(v1,
2017-05-20 10:23:26 250
原创 归一化与标准化
在机器学习和数据挖掘中,经常会听到两个名词:归一化(Normalization)与标准化(Standardization)。它们具体是什么?带来什么益处?具体怎么用?本文来具体讨论这些问题。一、是什么1. 归一化常用的方法是通过对原始数据进行线性变换把数据映射到[0,1]之间,变换函数为: 其中max为样本数据的最大值,min为样本数据的最小值。这
2017-05-18 20:55:00 20064 2
转载 条件概率、全概率公式与贝叶斯公式
条件概率、全概率公式与贝叶斯公式 一、条件概率 一个随机事件发生的概率是指在某些给定的条件下,事件发生的可能性大小的度量。但如果给定的条件发生变化之后,该事件的概率一般也随之变化.于是,人们自然提出:如果增加某个条件之后,事件的概率会怎样变化的?它与原来的概率之间有什么关系?显然这类现象是常有的. [例1] 设有一群共N人,其中M个女性,n1个是色盲患者. n1个色盲患者中女性占...
2017-04-18 22:15:44 5138
转载 操作系统--内存管理之虚拟内存的概念、特征以及虚拟内存的实现
传统存储管理方式的特征上一节所讨论的各种内存管理策略都是为了同时将多个进程保存在内存中以便允许多道程序设计。它们都具有以下两个共同的特征:1) 一次性作业必须一次性全部装入内存后,方能开始运行。这会导致两种情况发生:当作业很大,不能全部被装入内存时,将使该作业无法运行;当大量作业要求运行时,由于内存不足以容纳所有作业,只能使少数作业先运行,导致多道程序度的下降。2) 驻留性
2017-03-23 11:47:11 687
转载 操作系统--内存管理之连续分配管理方式
连续分配方式,是指为一个用户程序分配一个连续的内存空间。它主要包括单一连续分配、固定分区分配和动态分区分配。1单一连续分配内存在此方式下分为系统区和用户区,系统区仅提供给操作系统使用,通常在低地址部分;用户区是为用户提供的、除系统区之外的内存空间。这种方式无需进行内存保护。这种方式的优点是简单、无外部碎片,可以釆用覆盖技术,不需要额外的技术支持。缺点是只能用于单用户、单任务的操作系
2017-03-21 11:42:37 2826
转载 操作系统---内存管理之基本概念
内存管理(Memory Management)是操作系统设计中最重要和最复杂的内容之一。虽然计算机硬件一直在飞速发展,内存容量也在不断增长,但是仍然不可能将所有用户进程和系统所需要的全部程序和数据放入主存中,所以操作系统必须将内存空间进行合理地划分和有效地动态分配。操作系统对内存的划分和动态分配,就是内存管理的概念。有效的内存管理在多道程序设计中非常重要,不仅方便用户使用存储器、提高内存利
2017-03-20 15:57:11 376
转载 C++ primer学习笔记--第9章(2)
顺序容器 1.顺序容器操作 前面介绍的那些是所有容器都支持的,我们接下来介绍的只适用于顺序容器(以后还会介绍关联容器)。 (1)添加元素 不知道为啥原书篇幅超多,我觉得直接看代码就很明了,所以我就写代码了: list a = {1, 2, 3}; //注释为a的元素内容{1, 2, 3}a.push_back(4); //{1, 2, 3, 4},array和forwar
2017-03-19 15:14:07 307
原创 操作系统--进程间的通信,同步和互斥等
进程通信 概念:进程间传输数据(交换信息)。 常用方式:管道、有名管道、信号、信号量、消息队列、共享内存、套接字。 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
2017-03-17 21:16:20 1957
原创 操作系统--进程与线程
进程的概念 进程是可并发执行的程序在一个数据集上的运行过程,是系统进行资源分配和调度的一个独立单位。(注:一个程序在不同数据集上运行或者一个程序在同一数据集上的多次运行都是不同进程) (并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行) 通俗地讲,进
2017-03-16 21:31:24 394
原创 数据库知识复习--三大范式
数据库知识复习数据库的三范式是: 链接:https://www.nowcoder.com/questionTerminal/2cd273bb9ba9448c8045cd04dc20f6a9来源:牛客网第一范式( 1NF ): 字段具有 原子性 , 不可再分 。所有关系型数据库系统都满足第一范式)数据库表中的字段都是单一属性的,不可再分。例如,姓名字段,其中的姓
2017-02-21 15:43:55 438
转载 C++ primer 学习笔记 第9章(1)
顺序容器这部分的内容你在写程序的时候肯定是处处都能用到的,而且会让你的程序很简洁。本章其实是第三章内容的拓展,详细地介绍了标准库顺序容器的知识。一个容器就是一些特定同一类型对象的集合。顺序容器为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。顺序容器概述所有顺序容器都提供了快速顺序访问元素的能力,但不同容器在两个方面的性能不同:向容器中添加或删...
2016-12-21 22:29:23 237
转载 C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而
2016-12-21 16:57:31 211
转载 C++ this 指针详解
1. this指针的用处: this指针存在于类的成员函数中,指向被调用函数所在的类实例的地址。 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的
2016-11-18 10:34:04 284
原创 机器学习---梯度下降法
在机器学习算法中,对于很多监督学习模型,需要对原始的模型构建损失函数,接下来便是通过优化算法对损失函数进行优化,以便寻找到最优的参数。在求解机器学习参数的优化算法中,使用较多的是基于梯度下降的优化算法(Gradient Descent, GD)。 梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值
2016-10-24 21:12:38 473
原创 机器学习---生成模型与判别模型
生成模型(Generative Model)是相对于判别模型(Discriminative Model)定义的。他们两个都用于有监督学习。监督学习的任务就是从数据中学习一个模型(也叫分类器),应用这一模型,对给定的输入X预测相应的输出Y。这个模型的一般形式为决策函数Y=f(X)或者条件概率分布P(Y|X)。 决策函数Y=f(X):你输入一个X,它就输出一个Y,这个Y与一个阈
2016-10-14 11:31:05 12552 3
tensorflow 量化demo
2018-12-11
量化深度卷积网络的有效推理:白皮书
2018-08-13
网易技术部的MySQL中文资料
2017-01-02
13种粒子群优化算法
2016-12-20
测障测角小车
2015-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人