摘要: 其代码原型来自于yusugomori,DBN其主要就是RBM的堆叠,在代码实现里需要区分好第几个RBM,其每个RBM的隐层是下一个RBM的输入层。以及微调的原理就是根据已有的标签数据和最后一个隐含层生成的输出层进行调整。初学小娃。DBN.h 1 class DBN { 2 3 public: 4 int N; 5 int n_ins; 6 int *hidden_layer_sizes; 7 int n_outs; 8 int n_layers; 9 HiddenLayer **sigmoid_layers;10 RBM **rbm_l... 阅读全文
posted @ 2013-11-29 16:31 Ja ° 阅读(2403) 评论(0) 推荐(1) 编辑

摘要: 花了好多天去推导RBM公式,只能说数学是硬伤,推导过程在后面给出大概,看了下yusugomori的java版源码,又花了一天时间来写C++版本,其主要思路参照yusugomori。发现java和C++好多地方差不多,呵呵。本人乃初学小娃,错误难免,多多指教。出处:http://www.cnblogs.com/wn19910213/p/3441707.htmlRBM.h 1 #include 2 3 using namespace std; 4 5 class RBM 6 { 7 public: 8 size_t N; 9 size_t n_visible;10 ... 阅读全文
posted @ 2013-11-25 16:13 Ja ° 阅读(2755) 评论(1) 推荐(0) 编辑

2016年1月5日

摘要: Python pandas的效率比较: 1 from time import time 2 from math import exp,sqrt,log 3 from random import gauss,seed 4 seed(20000) 5 t0 = time() 6 7 S0 = 100 ... 阅读全文
posted @ 2016-01-05 21:27 Ja ° 阅读(743) 评论(0) 推荐(0) 编辑
摘要: 1 from math import log,sqrt,exp 2 from scipy import stats 3 4 def bsm_call_value(S0,K,T,r,sigma): 5 S0 = float(S0) 6 d1 = (log(S0 / K) + (r ... 阅读全文
posted @ 2016-01-05 21:23 Ja ° 阅读(3167) 评论(0) 推荐(0) 编辑

2014年5月27日

摘要: 题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4.分析:根据分析可以发现利用快速排序,在根据排序后直接输出前面的K个数。但是该方法需要更改数组的内容,在不能更改的前提下可以利用最常规的分析max的方法。///////////... 阅读全文
posted @ 2014-05-27 16:29 Ja ° 阅读(380) 评论(0) 推荐(0) 编辑

2014年5月25日

摘要: 题目:数字中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。分析:首先进行排序,因为大于一半,所以说经过排序之后的数组,如有次数大于的话说明那个数肯定是数组中间的那... 阅读全文
posted @ 2014-05-25 14:11 Ja ° 阅读(278) 评论(0) 推荐(0) 编辑

2014年5月24日

摘要: 题目:输入 一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc,acb,bac,bca,cab,cba分析:这个题目完全不会。根据标案分析发现一些细节需要注意,char* 和char[]的区别。//////////////////... 阅读全文
posted @ 2014-05-24 15:09 Ja ° 阅读(433) 评论(0) 推荐(0) 编辑

2014年5月23日

摘要: 题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。分析:首先不能创建新的结构,只能在树的前提下进行改变指针的指向。又由于是二叉搜索树,可以通过画图分析可知,二叉搜索树的左子树小于根节点小于右子树,可以发现是个递归过程也是一个中序遍... 阅读全文
posted @ 2014-05-23 14:49 Ja ° 阅读(364) 评论(0) 推荐(0) 编辑

2014年5月21日

摘要: 题目:请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复杂一个复杂链表。在复杂链表中,每个节点除了有一个Next指针指向下一个节点外,还有一个Sibling指向链表中的任意节点或者NULL。分析:第一反应是先复制Next,再复制Sibling。... 阅读全文
posted @ 2014-05-21 20:32 Ja ° 阅读(207) 评论(0) 推荐(0) 编辑

2014年5月20日

摘要: 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字互不相同分析:由后序遍历可以知道最后一个数字是树的根节点,而二叉搜索树的性质可以知道其左边的节点值小于根节点的值,右边的节点值大于根节点的值。由此递归。/*剑指... 阅读全文
posted @ 2014-05-20 14:49 Ja ° 阅读(550) 评论(0) 推荐(0) 编辑

2014年5月19日

摘要: 题目:从上往下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。分析:其实就是按层的遍历方式/*剑指offer面试题23*/#include #include using namespace std;struct BinaryTree{ int data; BinaryTree... 阅读全文
posted @ 2014-05-19 21:16 Ja ° 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个顺序是否是该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压栈序列,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但是4,3,5,1,2就不可能是。分析:首先利用图像进行形象化的理解。可以发现其压... 阅读全文
posted @ 2014-05-19 16:51 Ja ° 阅读(350) 评论(0) 推荐(0) 编辑

2014年5月15日

摘要: 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1)/*剑指offer面试题21感觉这道题目答案有点问题。不解!*/#include using namespace std;#define Maxsize 100... 阅读全文
posted @ 2014-05-15 16:31 Ja ° 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个矩阵,按照从外向里以顺时针一次打印出每一个数字,例如矩阵{ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16}} 则打印出: 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10分析:考虑各个边界/*剑指offer... 阅读全文
posted @ 2014-05-15 15:13 Ja ° 阅读(243) 评论(0) 推荐(0) 编辑

2014年5月14日

摘要: 题目:请完成一个函数,输入一个二叉树,该函数输出他的镜像分析:利用图形画出二叉树的镜像进行分析。树是数据结构的重中之重,尤其是树的实现大部分是用递归。好好花点时间琢磨一下,硬伤这是。/*剑指offer面试题19*/#include using namespace std;struct BinaryT... 阅读全文
posted @ 2014-05-14 21:09 Ja ° 阅读(195) 评论(0) 推荐(0) 编辑

2014年5月13日

摘要: 题目:输入两颗二叉树A和B,判断B是不是A的子结构。分析:需要先找到data一样的root节点,然后遍历左右孩子,看是否和B节点完全相等。/*剑指offer面试题18树是考察数据结构内功的不二之选一般代码简洁的话就需要用递归。而且由于树运用的指针比较多,一定要检查安全性*/#include usin... 阅读全文
posted @ 2014-05-13 14:45 Ja ° 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照递增排序的。分析:考虑两个表是否为NULL。/*剑指offer面试题17太懒没有写链表的创建函数,而是直接创建好。将就看吧!在windows下注释居然不能放在第一行!*/#include using namespace std;... 阅读全文
posted @ 2014-05-13 10:34 Ja ° 阅读(282) 评论(0) 推荐(0) 编辑

2014年5月12日

摘要: 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头节点。分析:确保输入的链表头指针为NULL或者整个链表就一个节点的情况/*剑指offer面试题16*/#include #include using namespace std;struct ListNode{ ListN... 阅读全文
posted @ 2014-05-12 16:28 Ja ° 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个链表,输出该链表中倒数第K个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如一个链表有6个节点,从头节点开始他们的值依次为1,2,3,4,5,6.这个链表的倒数第三个节点是值为4的节点。分析:不能多次遍历链表,只能一次遍历。/*剑指offer面试题1... 阅读全文
posted @ 2014-05-12 14:23 Ja ° 阅读(230) 评论(0) 推荐(0) 编辑

2014年5月11日

摘要: 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。分析:首先想到的是进行遍历,然后移到后面,但是效率O(n^2)。所以考虑使用首尾指针,可进行直接交换数据。但是这里考虑一下拓展性。/*剑指offer面试题14*/#include... 阅读全文
posted @ 2014-05-11 19:21 Ja ° 阅读(501) 评论(0) 推荐(0) 编辑

2014年5月10日

摘要: 题目:给定单向链表的头指针和一个节点的指针,定义一个函数在O(1)时间删除该节点。分析:本题目是基于一个假设,要删除的节点的确在链表中。因为我们需要O(n)的时间来判断该节点是否在链表中。/*剑指offer面试题13本题注意考虑时间效率;考虑删除节点会是否是尾节点,头节点。以及是否为空判断为了保证O... 阅读全文
posted @ 2014-05-10 16:16 Ja ° 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 题目:输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3位数即999.分析:本题最关键的部分是当n值非常大的时候会超出数据类型的范围。偷个懒,没有实现打印1,2,3....999.可以利用分割把string分割成char[]。然后单个的char转为int再... 阅读全文
posted @ 2014-05-10 14:30 Ja ° 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题目:实现函数double Power(double base,int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题。/*剑指offer面试题11比较好的方法是2*2*2*2=4*4这种。*/#include using namespace std;d... 阅读全文
posted @ 2014-05-10 11:04 Ja ° 阅读(218) 评论(0) 推荐(0) 编辑

2014年5月9日

摘要: 一般把十进制转化为二进制是除于2.但是除法的效率比移位运算远低的多。所以在实际编程中尽可能用移位运算代替乘除。同样要考虑到负数移位的情况下会出现无限循环。/*剑指offer面试题10当输入的值是负数的时候。例如-2,其结果为31.因为int是占4字节,1个字节位。*/#include using n... 阅读全文
posted @ 2014-05-09 16:18 Ja ° 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 神用递归。在这个题目里面递归的效率很差(因为每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址、临时变量),当数据量很大的时候,效率慢,而且会导致栈溢出。/*剑指offer面试题9*/#include using namespace std;int Fibonacci(int n){ ... 阅读全文
posted @ 2014-05-09 14:53 Ja ° 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 题目:把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的一个旋转,数组其最小值。例如数组[3,4,5,1,2]是[1,2,3,4,5]的一个旋转,其最小值为1/*剑指offer面试题8.这段代码针对一般情况,但是如果数组是[1,0,1,1,1]或者是[1,1,1,... 阅读全文
posted @ 2014-05-09 10:49 Ja ° 阅读(185) 评论(0) 推荐(0) 编辑

2014年5月8日

摘要: #include using namespace std;void CountSort(int* a,int k,int n){ int s = 1; for(int i=0;i=0;i--){ tmp1 = a[i]; tmp2 = a[i] % s; ... 阅读全文
posted @ 2014-05-08 18:15 Ja ° 阅读(296) 评论(0) 推荐(0) 编辑

2014年5月7日

摘要: 一、Combiner作用1、combiner最基本是实现本地key的聚合,对map输出的key排序,value进行迭代。如下所示:map: (K1, V1) → list(K2, V2)combine: (K2, list(V2)) → list(K2, V2)reduce: (K2, list(V... 阅读全文
posted @ 2014-05-07 21:21 Ja ° 阅读(252) 评论(0) 推荐(0) 编辑
摘要: import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.Text;import org.ap... 阅读全文
posted @ 2014-05-07 19:57 Ja ° 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 归并排序的基本思想:首先,将R[0..n-1]看成是n个长度为1的有序表,将相邻的有序表进行归并,得到n/2个长度为2的有序表;然后,再将这些有序表成对归并,得到n/4个长度为4的有序表,如此循环下去,最后得到一个长度为n的有序表。 注意的是:Merge()实现了一次归并,接下来需要利用Mer... 阅读全文
posted @ 2014-05-07 14:48 Ja ° 阅读(249) 评论(0) 推荐(0) 编辑

2014年5月6日

摘要: import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.ap... 阅读全文
posted @ 2014-05-06 20:47 Ja ° 阅读(168) 评论(0) 推荐(0) 编辑

2014年5月5日

摘要: 以数列 14,11,25,37,9,28 为例,详细描述执行一趟快速排序的算法:1,选择待排序数列的枢轴,一般以数列的首元素作为枢轴.此数列中,我们选择首元素14作为枢轴,nPivot = 14.2,设定两个指针 i 和 j ,分别指向数列的首元素和尾元素. i 指向首元素14, j 指向尾元素2... 阅读全文
posted @ 2014-05-05 21:23 Ja ° 阅读(481) 评论(0) 推荐(0) 编辑
摘要: import java.io.IOException;import java.util.Iterator;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.ha... 阅读全文
posted @ 2014-05-05 18:58 Ja ° 阅读(275) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std;void BubbleSort(int* a,int n){ for(size_t i=0;ii;j--){ if(a[j-1] > a[j]){ int tmp = a[j]; ... 阅读全文
posted @ 2014-05-05 14:37 Ja ° 阅读(134) 评论(0) 推荐(0) 编辑

2014年5月4日

摘要: #include using namespace std;struct BinaryTreeNode{ int data; BinaryTreeNode* lchild; BinaryTreeNode* rchild;};BinaryTreeNode* Rebuilt(int *p... 阅读全文
posted @ 2014-05-04 13:29 Ja ° 阅读(161) 评论(0) 推荐(0) 编辑

2014年4月26日

摘要: #include using namespace std;void Sort(int* a,int num,int n){ int c = 2 * num + 1; while(c+1 a[c]){ c++; } if(a[c] > a... 阅读全文
posted @ 2014-04-26 18:33 Ja ° 阅读(169) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std;void SelectSort(int* a,int n){ for(int i=0;i a[j] ){ int tmp = a[i]; a[i] = a[j]; ... 阅读全文
posted @ 2014-04-26 13:16 Ja ° 阅读(137) 评论(0) 推荐(0) 编辑

2014年4月24日

摘要: 1、邻接矩阵#include using namespace std;#define MaxSize 100typedef char VertexType[3];typedef struct Vertex{ int adjvex; //顶点编号 VertexType da... 阅读全文
posted @ 2014-04-24 16:52 Ja ° 阅读(328) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std;void InsertSort(int* a,int n){ for(int i=1;i tmp){ for(int k=i;k>j;k--){ a[k] = a[k-... 阅读全文
posted @ 2014-04-24 16:43 Ja ° 阅读(124) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std;void ShellSort(int* a,int n){ int Step = n/2; while(Step > 0){ for(int i=Step;i= 0){ if(a[k] ... 阅读全文
posted @ 2014-04-24 16:42 Ja ° 阅读(161) 评论(0) 推荐(0) 编辑

2014年4月9日

摘要: 树的存储结构1.双亲数组存储结构用一个一维数组存储树中的各个节点,数组元素是一个记录,包含data和parent两个字段,分别表示节点的数据值和其双亲在数组中的下标。其类型定义如下:typedef struct{ ElemType data; int parent;} ParType[MaxSize];在这个一维数组中,树中节点可按任意顺序存放。例如,图5-1中给出的树,它的双亲数组存储表示如图5-3所示。其中,规定下标为0的位置存储的节点是根节点。位置01234567空闲Maxsize-1dataABCDEFGH…parent-10002234… ... 阅读全文
posted @ 2014-04-09 14:31 Ja ° 阅读(318) 评论(0) 推荐(0) 编辑

2014年4月4日

摘要: HDFS是一个高度容错的分布式文件系统,为了保证数据的一致性采用“写入一次,多次读取”的方式。1、上传本地文件import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileStatus;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;public class CopeFile { public static void main(String[] arg... 阅读全文
posted @ 2014-04-04 16:25 Ja ° 阅读(350) 评论(0) 推荐(0) 编辑

导航