自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 资源 (1)
  • 收藏
  • 关注

原创 将博客搬至CSDN

校园网连接新浪博客一直有问题,所以在此对新浪博客进行搬家请前往CSDN查看博主最新动态:http://blog.csdn.net/bloodfeast

2017-09-05 12:36:31 217

原创 visual studio无法查看局部变…

这两天发现VS2013一直没法查看局部变量,最后发现,是解决方案那里选择的是Release而不是Debug,调回来之后一切OK。这一股蛋疼的感觉。。。

2017-09-05 12:36:28 304

原创 C++虚函数的内存管理

这几天在复习多态性和动态绑定,看到一篇不错的博文:https://blog.twofei.com/496/这里记录一下。动态绑定实现关键就在于C++的虚函数,虚函数的内存管理由虚函数表实现,下面几张摘自博文的图很好地说明了虚函数的内存:1、当子类没有虚函数时,直接采用父类虚函数表(虚函数表由指针vfptr指向),如果有虚函数,同名的会覆盖,不同名的接在后面[0][1]的后面。2、

2017-09-05 12:36:25 384

原创 leetcode:Simplify Path+Edit…

Simplify Path:题目本身不难,模拟linux的文件路径,如../表示上一级目录,用栈的思想即可。不过我的方法用了一堆if,最关键的是,我是逐个读取字符,看了大神的代码,直接getline(ss,tmp,'/'),tmp就是两个/之间的字符串。Edit Distance:用替换、删除、插入三种方法,把字符串s1转为s2。典型的动态规划,关键还是要想到状态转移方程:dp[i][

2017-09-05 12:36:23 232

原创 linux中$* $@ 以及各自…

为了方便,这里记录一下实验结果,方便以后查询实验程序如下:#!/bin/bashecho '$@'for i in $@do       echo $idoneecho '"$@"'for i in "$@"do       echo $idoneecho '$*'for i in $*do       echo $idoneecho '"$*"'fo

2017-09-05 12:36:20 753

原创 leetcode:Pow(x, n) + N-Quee…

Pow(x, n):就是实现指数函数。其实自己已经想到边了,类似于pow(n/2)*pow(n/2),但一直在纠结这样其实也要算两次。其实只要换个角度,pow(x,n)=pow(x*x,n/2)即可。另外,要注意java和c++的差别,-2147483648(int型最大负数)这个数转为正数,在c++会溢出,java可能因为有自动处理机制,所以会正常转换。人生第一次抄答案(java版)还W

2017-09-05 12:36:17 255

原创 用已有的caffemodel和python脚本进…

2月13日更新:在使用python脚本之前,首先需要在根目录makepycaffe,同时确保环境变量PYTHONPATH是指向当前caffe/python这一子目录下的,如果指向其他版本caffe的python目录,可能导致程序无法运行==========================================================当已有caffemodel之后,

2017-09-05 12:36:14 656

原创 leetcode:Permutations1+2 + Rotat…

Permutations1:给定数组如[1,2,3],找出所有排列。用回溯法即可,关键在于迭代器的应用,我们可以用迭代器暂时把入栈的元素从数组中删除,这样就能很方便的用深搜来遍历数组了。Permutations2:数组中这次有了重复元素,解决方法很简单,在入栈之前做个判断,如果等于上一个元素,说明不用考虑(这种情况已经遍历过了)。关键是验证了一种方法,迭代器可以加减常量:ite==*(

2017-09-05 12:36:11 277

原创 leetcode:Multiply Strings +…

eMultiply Strings:依然是模拟题,求两个字符串表示的大数乘积。其实只要模拟乘法的过程即可:数一第i位和数二第j位的乘积,是累加到答案的第i+j位。感觉模拟题还是要多点耐心,想清楚问题的关键即可。Jump Game:一开始想到用DP,从尾部开始往前,dp[i]=true的条件是它能到之后的任一true的位置。时间复杂度o(n),大数据测试时超时。换了用贪心,从后往前,每次

2017-09-05 12:36:08 220

原创 leetcode:Longest Increasing…

Longest Increasing Subsequence:经典题目,最长上升子序列。这个比较容易想到DP正常思路是:dp[i]表示以i结尾的最长子序列长度,所以dp[i]=max(dp[i],dp[j]+1),其中j对应的num[j]转移方程混乱。所以以后还是不要贪多,转移方程最重要的是表示子问题的状态,重要的是精准而不是广泛First Missing Positive:找到无序

2017-09-05 12:36:06 167

原创 leetcode:Maximum Subarray+Find M…

Maximum Subarray:又遇到了经典问题,最大子段和。这里记录一下,其实这个问题难点就在于,不能用一个状态方程表示,而需要两个:end作为以第i个元素结尾,能取得的最大值,dp作为,前i个元素能取得的最大值end[i]=max(end[i-1]+nums[i],nums[i]);dp[i]=max(end[i],dp[i-1]);然后可以优化成两个变量,使空间复杂度降为O(1

2017-09-05 12:36:03 240

原创 leetcode:Gray Code +&n…

Gray Code:这道题说白了就是求1-n对应的格雷码,只要知道gray[i]=i^(i>>1)这个基本公式即可。Lexicographical Numbers:给出小于n的所有数字的字典序数组,如[1,10,11,12,13,2,3,4,5,6,7,8,9](n=13)。这道题我用的是深搜,不过看discuss,更快的是用迭代,直接循环n次,每次把数字按指定规律变化即可Binar

2017-09-05 12:36:00 189

原创 leetcode: Best Time&nb…

Best Time to Buy and Sell Stock with Cooldown:这道题从中学到最重要的就是,当发现一个DP怎么也无法表示完全时,考虑多个DP方程本题一共需要用三个DPbuy[i] = max(rest[i-1]-price,buy[i-1]) sell[i] = max(buy[i-1]+price,sell[i-1]) rest[i] = max(sel

2017-09-05 12:35:58 275

原创 caffe使用图片数据作为输入

caffe输入图片数据其实很简单,把层类型改成ImageData,source改成指向图片信息的文件(其中每行指向一张图片)即可。最主要记得,如果提示错误信息:F0629 09:46:54.935997 18325 image_data_layer.cpp:49]Check failed: !lines_.empty() File is empty原因很可能是,要把原来写在data_par

2017-09-05 12:35:55 2994 2

原创 leetcode:LongestRepeatingCharac…

Longest Repeating Character Replacement:给一个字符串,只能替换其中k个字符,求能替换出的最长相同字符的子串。这个是用滑动窗口来解,算是遇到的第一个这种类型的题目。i作为右窗口,不断右移直到s.size()-1。子串减去已出现的最多的字符数,如果超过k,说明此时需要替换的字符数量已经超过了k,要把左窗口右移。右移之后还要减少相应的字符数量Maximu

2017-09-05 12:35:52 184

原创 c++使用杂录(一)

一、如何去掉string类的最后一个字符a[a.size()-1]='\0';二、去掉容器中重复的且长度大于n的字符串(n在之前给定)list_1.unique( [n](const string a,const string b){ returna==b&&a.size()>n; } );即:使用lambda表达式,如果相邻的两个字符串相等且长度大于n,则删掉。注意:要先用sort

2017-09-05 12:35:49 254

原创 leetcode:Reconstruct Original D…

Reconstruct Original Digits from English:给定一组乱序的字符串,是由zero、one、two......到nine的所有字母乱序组成,求对应的升序数字串。如给定,owoztneoer,对应012。这道题是我自己想复杂了,想着找到每个数字的uniquenumber,然后贪心搜索。其实先把几个有独一无二字符的数字找出来(如:six的x即是独一无二),然后

2017-09-05 12:35:46 195

原创 leetcode:Bulb Switcher + K…

Bulb Switcher:给n个灯泡,第i轮关掉每i个灯泡,问n轮之后还剩几个灯泡。如果用数组模拟肯定要超时,仔细想了想DP也是要超时的。其实这道题就是道数学题,如果第i盏灯亮着,那么必定是个某个k的平方,因为只有这样它才会在第k轮被点亮,又没有对应的i的因子(i/k)来把它灭掉。Kth Smallest Element in a BST:搜索二叉排序树中第k小的元素。这道题证明了,

2017-09-05 12:35:44 197

原创 在Ubuntu上安装opencv

由于实验要用到dense flow,因此需要在ubuntu 14.10上安装opencv,这里安装的是opencv-2.4.9。首先在官网下载opencv对应版本,然后按照网上的博客,安装了一大堆依赖,总结如下:sudo apt-get -qq install libopencv-dev build-essentialcheckinstall cmake pkg-config yasm l

2017-09-05 12:35:41 323

原创 如何同时使用相同项目的两个分支

起因是,自己首先fork了caffe的源码项目,然后做了很多修改,现在看到一篇论文,需要另外fork论文对应的修改版——TSNcaffe。直接在tsncaffe上点击fork按钮,只会跳转到自己github的caffe中,没有fork的效果,因为两者同属于caffe这个项目。解决办法就是,首先以http的方式,把tsncaffe下载到本地,然后输入git remote remove orig

2017-09-05 12:35:38 3480

原创 finetune入门,如何用已有的caffem…

调整了N久,终于收敛了,记录一下这段时间的工作。首先在caffe官网的github上,有个modelzoo,里面有很多预训练的模型,这里下载一个VGG_CNN_M_2048的model。然后就把网络复制到本地,这里有个问题,我用vgg网页上附带的网络代码,运行一直没法收敛,换了caffe自带的在路径models/bvlc_reference_caffenet/train_val.protot

2017-09-05 12:35:36 538

原创 leetcode:Integer to Roman + Fin…

Integer to Roman:这个思路还是挺简单,只要理清罗马文的书写规则即可,原理就是用递归,不断的减小数字,转为罗马文。如:if(num>=50) return "L"+intToRoman(num-50);Find Right Interval:给出一组线段的起点和终点,要求逐个找出这些线段右边第一个线段的id。中心思路就是找到第一个start大于目标线段end的线段。自己

2017-09-05 12:35:33 165

原创 leetcode:Shuffle an Array + Miss…

Shuffle an Array:主要内容就是随机shuffle一个数组,不能用额外空间。思路就是每次随机swap两个元素。但要确保数字的各种排列等可能出现,所以选取元素有讲究:swap(output[i],output[i+rand()%(output.size()-i)]),这样每次都是把当前元素与该元素之后的元素随机置换,比如有abcd那么d要出现在b的位置,可能性为:3/4(第一轮

2017-09-05 12:35:30 193

原创 leetcode:Linked List Random Node…

Linked List Random Node:给定一个链表数组,随机返回其中一个元素,要求返回所有元素的可能性一致。满足这个要求很简单,求出链表的长度,然后根据长度设置随机值,再返回对应位置的元素即可。然后就是进阶要求:无法得到链表的长度,依然要求等概率随机返回。这个就涉及一个经典的算法,水塘抽样,步骤如下:1、把第一个样本放入ans2、对于接下来每个样本a[j],从1-j随机抽一个

2017-09-05 12:35:28 164

原创 leetcode:Single Number123 …

Single Number 1+2+3:这是一系列题目,第一题是,给定一个整数数组,数组中每个数都出现了两次,除了一个数仅出现一次,要求找到这个数。方法很简单,位操作,一路 异或 过去,两次的数都被抵消了,剩下的就是那个数第二题是每个数都出现了三次,找出那个出现了一次的数,就用一个32元素的数组,记录每个数的各二进制位是否为1,然后遍历这个32元素的数组,如果某元素的数值不能整除3,代表那

2017-09-05 12:35:25 226

原创 leetcode:Fraction to Recurring …

Fraction to Recurring Decimal:题目大意就是给定一个除数被除数,用字符串表示结果,小数循环部分用括号括起来,比如1/3=0.(3)一开始想到用map储存状态,自然想到直接记录小数的数字,但不太方便。换个角度,我们来存储“状态”,也就是被除数(除数永远是恒定的),然后遇到重复的被除数,则说明开始循环。思路是对的,连续wa的几次,总结原因还是没有一个清晰的流程图,

2017-09-05 12:35:22 216

原创 leetcode:Next Permutation + Lon…

Next Permutation:题意是,给定一个字符串,如4123,求出在字典序排列组合下大于它的下一个字符串,上例的答案是4132,4312虽然也大于,但在排列组合中不是紧邻4123的,因此不行。思路是升序降序从后往前找,如果一直是升序,说明这个字符串就是字典序下最大的了,没有更大的,按照题目要求,就返回字符序最小的,如输入4321(最大字典序),那么返回1234。如果遍历过程

2017-09-05 12:35:20 175

原创 leetcode:Divide Two Integers + …

Divide Two Integers:这道题难度不是很大,主要是细节问题,大意是求两个数相除,不能用乘除法和取模。思路就是被除数不断减去除数,直到被除数小于除数为止。加快效率的办法是位运算,除数不断左移(相当于不断乘2),找到刚好小于被除数的那个数,与被除数相减。此时答案ans+=(1几个需要注意的点:1、记得判断正负,我这里处理的办法是全部转为正数2、负数最大值(-21474836

2017-09-05 12:35:17 169

原创 在linux下挂载、更新与定制硬盘

这两天做实验发现数据集太大,总是空间不足导致数据出错,今天决定重新梳理一下linux的文件系统。一、重建分区需要操纵硬盘分区,就需要用到一个命令:fdisk首先,在/dev目录下有sda和sdb两个文件设备,分别用fdisk /dev/sda(sdb)打开,按照提示输入m,可以看到下列信息上面详细列出了fdisk操纵硬盘分区的命令,首先输入p来查看一下分区的使用情况可以看到,

2017-09-05 12:35:14 883

原创 MATLAB使用备注(二)

1、关于打开程序后路径设定:比如想要把D:/save/这个目录作为初始路径。在matlab的主界面有一个set path,这个只是设置搜索路径​,因此哪怕把D:/save/这个路径放到这里面的最顶端也没用。正确的设置方法是右键桌面上的matlab快捷方式,属性,再把里面初始位置一栏设置成D:/save/即可2、cell数组转字符串数组如果有一组字符串存在了cell数组中,那么只要...

2017-09-05 12:35:11 741

原创 leetcode:Remove Element +  Imple…

Remove Element:题意主要是给定一个字符串及一个值val,在不使用额外空间的条件下,把所有等于val的值去掉(放在数组最末位),返回更新后的数组长度。我的思路很简单,遍历一次数组,每当遇到等于val的数值时,就以此的下一个为起点往后遍历,找到第一个不等于val的值,交换即可。看了大神的思路,才意识到,直接寻找不相等的值来替换之前寻到的val,速度会快很多,程序也很简洁:

2017-09-05 12:35:09 182

原创 自制lenet:从获取数据到网络编写…

这几天在自定的mnist数据基础上,自行编写了mnist网络以及使用该网络的solver,这里记录一下。首先正如之前提到的,我们要编写的网络,即是由多个layer组成,编写网络的任务,就是定义各个layer之间的连接,以及设置layer内部的参数等等。有了一个网络之后,我们需要再定义一个solver,它的主要任务就是告诉Caffe,要怎么使用这个网络,设定权值的更新方式、更新幅度等等。

2017-09-05 12:35:06 213

原创 自制lenet:从获取数据到网络编写…

这两天自己从数据预处理一直到编写网络,做了一次完整的caffe编程,用的数据集是mnist,参考的网络是caffe上的lenet。首先说几个对自己帮助比较大的博客:【1】、http://www.cnblogs.com/NanShan2016/p/5487194.html这个系列博客介绍了一种一般性的方法,如何从任意图像数据,得到能被caffe处理的lmdb数据。【2】、http://

2017-09-05 12:35:03 275

原创 在VS2013上安装opencv

今天安装了一下opencv,用于后续的图片数据处理,主要参考博文http://blog.csdn.net/SherryD/article/details/51734334一、解压与环境路径首先从官网下载最新的2.4.13,直接打开exe文件,实际上就是一个简单的解压,我解压的目录是D:\Application\opencv解压完成之后,和java类似,需要让系统知道你的库文件在哪,所以打

2017-09-05 12:35:01 455

原创 Caffe卷积层的实现细节

这两天跟Caffe的源码死磕了一阵,有点吐血的感觉,果然我和大神的思维还是有点差距的.......这篇主要记录一下Caffe的一个重要layer——卷积层的实现,首先需要明确,在lenet的示例中,用的是conv_layer,但它并非是最基础的卷积层,它是继承了base_conv_layer,这个才是最基础的卷积层,很多卷积函数实际上是在这里面实现的。阅读过程中参考了多篇博文,感觉讲得

2017-09-05 12:34:58 1232

原创 自行编写caffe网络层

本文主要参照http://blog.csdn.net/shuzfan/article/details/51322976,编写一个简单的传播层,前向传播时复制数据,反向传播时把梯度按比例缩放。首先需要明确caffe的工作结构,从总体细分依次是:solver->net->layer->blob首先是solver,这个可以理解为一个解释器,里面是很多caffe命令,包括指明程序该使用哪一个深度

2017-09-05 12:34:55 328

原创 leetcode:Generate Parentheses

题意是:现有n对括号,问这些括号共能组成多少合法的字符串比如n=3,对应的字符串数组就是:[  "((()))",  "(()())",  "(())()",  "()(())",  "()()()"]这道题自己想到的思路是:每次在当前串中插入一个左/右括号,并且始终保证左括号数量不大于右括号(不然就会出现有右括号无法匹配到左括号的情况)。递归终结条件是判定左括号数量为

2017-09-05 12:34:53 126

原创 leetcode:括号匹配问题

题意很简单,就是给定一系列的(){}[]括号的字符串,让程序检测出括号是否一一对应,比如({)}这样的就是不合格的。思路还是很简单,就用栈来解决,后进先出,看新的}])元素,是否和栈顶的({[元素匹配。记录一下自己失误的地方,一个是设定栈的元素类型时,忘了可以直接用string::value_type来取得字符串的元素类型,当然,根据文档显示,value_type即是char类型。

2017-09-05 12:34:50 412

原创 双流神经网络及3D卷积系列论文阅读…

这周一共读了4篇论文,算是理清了从最初的时间+空间双流神经网络,到今年CVPR的3D卷积+双流网络这一系列的演化。第一篇Two-Stream Convolutional Networks for Action Recognition inVideos提出的是一个双流的CNN网络,分别捕捉空间和时间信息。对于空间信息,文章用的是类似于另一篇论文的CNN结构,这个准备之后在阅读,对于时间信

2017-09-05 12:34:47 10622 4

原创 从安装cudnn拓展开的故事。。。

最开始在室友的建议下,采用cudnn来加速caffe的运算速度,然而莫名其妙的发现,主机gpu1上的GPU使用率始终保持在90%以上,因此尝试自行修复,结果悲剧了,一次重启之后发现/usr/bin目录下找不到nvidia-smi命令,然后就没法查看GPU状态了......开始以为是驱动的问题,于是把cuda重装,发现没解决,一咬牙把整个nvidia驱动都重装了,为了把之前的nvidia驱动

2017-09-05 12:34:45 311

Javascript与网络cookie

JavaScript的cookies相关介绍

2013-11-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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