随笔分类 -  技术

编程方面的东西
摘要:1.使用场景 假设我们有训练好的模型A,B,C,我们希望使用A,B,C中的部分或者全部变量,合成为一个模型D,用于初始化或其他目的,就需要融合多个模型的方法 2.如何实现 我们可以先声明模型D,再创建多个Saver实例,分别从模型A,B,C的保存文件(checkpoint文件)中读取所需的变量值,来 阅读全文
posted @ 2019-03-05 18:00 handspeaker 阅读(5481) 评论(3) 推荐(1) 编辑
摘要:虽然tf官方希望用户把 train , val 程序分开写,但实际开发中,明显写在一起比较简单舒服,但在保存数据到 summary 时, val 部分和 train 部分不太一样,会有一些问题,下面讨论如何在这种情况下记录 train/val 的 summary 。 假设训练时的主要代码结构如下: 阅读全文
posted @ 2018-01-31 14:35 handspeaker 阅读(7213) 评论(0) 推荐(0) 编辑
摘要:centOS上不支持rar解压,需要额外安装软件,收费版是unrar,免费版是unar unar在centOS上安装需要源码编译,下面是安装方法: 1.安装依赖 yum install gnustep-base-devel yum install zlib-devel yum install bzi 阅读全文
posted @ 2018-01-03 12:41 handspeaker 阅读(3805) 评论(1) 推荐(0) 编辑
摘要:关于多gpu训练,tf并没有给太多的学习资料,比较官方的只有:tensorflow-models/tutorials/image/cifar10/cifar10_multi_gpu_train.py 但代码比较简单,只是针对cifar做了数据并行的多gpu训练,利用到的layer、activatio 阅读全文
posted @ 2017-12-27 17:42 handspeaker 阅读(34474) 评论(0) 推荐(1) 编辑
摘要:一般在保存模型参数的时候,都会保存一份moving average,是取了不同迭代次数模型的移动平均,移动平均后的模型往往在性能上会比最后一次迭代保存的模型要好一些。 tensorflow-models项目中tutorials下cifar中相关的代码写的有点问题,在这写下我自己的做法: 1.构建训练 阅读全文
posted @ 2017-12-21 16:00 handspeaker 阅读(7826) 评论(1) 推荐(0) 编辑
摘要:tensorflow目前支持最好的语言还是python,但大部分服务都用C++ or Java开发,一般采用动态链接库(.so)方式调用算法,因此tensorflow的c/c++ API还是有必要熟悉下,而且经过本人测试,相同算法,c接口相比python速度更快。 下面讲解如何让程序调用tensor 阅读全文
posted @ 2017-08-22 17:26 handspeaker 阅读(57537) 评论(5) 推荐(0) 编辑
摘要:网上找了下tensorflow中使用batch normalization的博客,发现写的都不是很好,在此总结下: 1.原理 公式如下: y=γ(x-μ)/σ+β 其中x是输入,y是输出,μ是均值,σ是方差,γ和β是缩放(scale)、偏移(offset)系数。 一般来讲,这些参数都是基于chann 阅读全文
posted @ 2017-07-27 14:05 handspeaker 阅读(75312) 评论(21) 推荐(0) 编辑
摘要:注意:如果是linux或mac os操作系统,可以参考https://www.tensorflow.org/install/install_c,直接下载对应的so库和头文件,然后跳到步骤4。如果不能使用,再从源码编译。 1.下载tensorflow源码 git clone --recursive 阅读全文
posted @ 2017-06-14 10:48 handspeaker 阅读(22824) 评论(1) 推荐(1) 编辑
摘要:最近学习了生成对抗网络(GAN),基于几个经典GAN网络结构做了些小实验,包括dcgan,wgan,wgan-gp。坦率的说,wgan,wgan-gp论文的原理还是有点小复杂,我也没有完全看明白,因此在此就不详细介绍了,如果感兴趣可以阅读参考部分的论文,本篇博客主要着重于记录如何利用tensorfl 阅读全文
posted @ 2017-05-24 18:00 handspeaker 阅读(5529) 评论(0) 推荐(0) 编辑
摘要:开源了一个14年写的随机森林程序,只有1500行C++代码,支持回归和分类,里面有mnist训练的实例,附了不少注释,比较适合入门学习 地址: https://github.com/handspeaker/RandomForests 阅读全文
posted @ 2017-02-28 16:55 handspeaker 阅读(2039) 评论(0) 推荐(0) 编辑
摘要:最近用caffe做了一下regression问题,先用data layer中的data,float_data试了一下,data用来存放图片,float_data存放regression的values,label存放标签,发现不行,因为float_data和label这俩是指向同一块内存,两者不能共存 阅读全文
posted @ 2016-11-03 19:49 handspeaker 阅读(7206) 评论(13) 推荐(1) 编辑
摘要:一般算法工程师做标注,都要先开发个标注工具,无非下面几个选项: 1.mfc,C#,优点是交互界面友好,开发难度适中,缺点是没法跨平台 2.matlab,优点是可以跨平台,开发难度非常低,缺点是速度慢、交互界面很烂 3.搭个服务(土豪选项),直接服务器上搭个标注服务,再写个界面,标注人员通过浏览器打开 阅读全文
posted @ 2016-08-08 11:05 handspeaker 阅读(2851) 评论(0) 推荐(0) 编辑
摘要:拉格朗日插值原理:拉格朗日插值的具体介绍网址:https://zh.wikipedia.org/wiki/%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E6%8F%92%E5%80%BC%E6%B3%95翻译成人话就是,该曲线是由多个n次多项式的和构成的,n是参与插值的点... 阅读全文
posted @ 2015-12-11 15:29 handspeaker 阅读(5260) 评论(0) 推荐(0) 编辑
摘要:由于工作需要,研究了一下android上获取内存信息的方法,总结如下:1.SDK获取在Java层利用API获取很简单,直接使用ActivityManager.MemoryInfo类即可,代码如下: ActivityManager activityManager=(ActivityMan... 阅读全文
posted @ 2015-03-31 11:40 handspeaker 阅读(5801) 评论(0) 推荐(0) 编辑
摘要:本来之前想边学边写一个有关libgdx的游戏开发历程的,但是由于自己的懒惰和客观上的各种事情,一直没有搞下去。最近发现了一个大牛写的一本书《Beginning Android Games, 2nd Edition》,就是讲这个的,顿时更没有想写的欲望了。这次就偷懒把这个书贴一下,供大家参考吧。下面是... 阅读全文
posted @ 2015-03-18 10:56 handspeaker 阅读(582) 评论(0) 推荐(0) 编辑
摘要:1.保存对象到文件中Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Object obj) { File file =new File("test.dat"); FileOutputStream out; try { out = new FileOutputStream(file); ObjectOutputStream objOut=new ObjectOutputStrea... 阅读全文
posted @ 2014-03-22 13:49 handspeaker 阅读(51348) 评论(5) 推荐(5) 编辑
摘要:Lucas-Kanade算法广泛用于图像对齐、光流法、目标追踪、图像拼接和人脸检测等课题中。一、核心思想给定一个模板和一个输入,以及一个或多个变换,求一个参数最佳的变换,使得下式最小化在求最优解的时候,该算法假设目前的变换参数已知,并迭代的计算的增量,使得更新后的能令上式比原来更小。则上式改写为:二、算法流程1.初始化参数向量2.计算及其关于导数,求得参数增量向量3.更新,4.若小于某个小量,即当前参数向量基本不变化了,那么停止迭代,否则继续2,3两步骤。三、具体做法对做一阶泰勒级数展开,则目标函数变为:对其求导,并令导数为0,得到下式:对上式中的求解即可,得到的是的解析解:其中,四、Luca 阅读全文
posted @ 2014-03-17 10:59 handspeaker 阅读(16486) 评论(0) 推荐(1) 编辑
摘要:由于过年玩得比较爽,回来之后又一直忙于公司实习和毕业答辩等事情,所以还没有好好总结自己的2013。但是,写年终总结是个好习惯,虽然现在有点迟,都已经是14年的3月份了。也算是为需要的人分享经验,同时也是给自己的经历做个记录。1.概述先说个人情况,男,北京bupt硕士,2年半制,2014年春毕业。本科和硕士专业都是通信工程相关,不过现在通信行业俨然已经没落了,所以硕士期间的研究方向和找工作投的岗位基本没考虑通信,都是计算机、互联网方向的。研究方向算是跟图像处理、模式识别、android开发吧,其他的零碎的例如数据库、python也搞过,不过很少。平时经常用C++,Java和Matlab。总的来说 阅读全文
posted @ 2014-03-13 15:52 handspeaker 阅读(16445) 评论(2) 推荐(4) 编辑
摘要:因为从文件读取图像到Bitmap是一件比较费时的事情,所以研究了一下几种可行的办法,并做了对比。首先解释一下为什么耗时,这是因为,在从jpg或者png文件中读取Bitmap时,一来需要对外存进行操作并且图像文件一般都比较大,二来在创建Bitmap时,基本都需要对原始图像做操作,例如:降采样、剪切、旋转等等。所以如何高效的读取图片并呈现出来,是一个很值得研究的问题。根据我的想法,大致想出了3种方案:1.在当前的UI线程直接读取并操作图像,然后呈现。2.新开一个子线程读取并操作图像,然后利用Bundle中Serializable的相关方法将其传回UI线程并呈现。3.其他做法与2一样,但是利用的是B 阅读全文
posted @ 2014-03-07 15:33 handspeaker 阅读(7621) 评论(0) 推荐(0) 编辑
摘要:最近在工作中遇到了一些问题,总结下来就是Android中Rect这个类造成的。不得不说,不知道Android SDK的开发人员是怎么想的, 这个类设计的太奇葩了。首先介绍一下Rect类:Rect类主要用于表示坐标系中的一块矩形区域,并可以对其做一些简单操作。这块矩形区域,需要用左上右下两个坐标点表示(left,top,right,bottom),你也可以获取一个Rect实例的Width和Height。就在这里,奇葩的事情来了,作为一个有一点经验的做图像或者矩阵运算或者编程的程序员来说,大家的共识是,如果一个矩阵是MxN的,也就是M行N列,那么行号是[0,M-1],列号是[0,N-1]。可是奇葩 阅读全文
posted @ 2013-07-14 18:48 handspeaker 阅读(42918) 评论(1) 推荐(2) 编辑