自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 吐槽Deeplearning4j

Deeplearning4j是java写的,就去看源代码,现在吐槽一下,1:初始化的结构太繁冗了,采用Build没有意见,但是一圈套一圈。初始化最求结构简单有效,逻辑需要都是单向的,deeplearning4j为global赋值,加了一层,而且参数初始化后保留的conf的引用。喜欢Spark的初始换方式,global直接设置为全局的MetaData。而且配置的类名和实际的层的类名是一致的。比如都叫ConvolutionLayer,让人看起来眼花。2:平台的文档应付,写的Guide有应付的嫌疑,好

2021-03-17 23:23:10 1186

原创 Layer Normalization反向传播推导代码

LayerLayer Normalization反向传播x的梯度计算,g和b都非常好计算x的梯度计算的公式为代码为,可以调用float[] bp = bpG( new float[]{ 1,2,3, }, new float[]{ 1,1,2, }, new float[]{ 1,1,1 });输出x的梯度为[[ 0.2041, ...

2021-03-07 21:25:58 827

原创 卷积池化的方式

卷积池化(下采样)有三种方式,有input 为1 2 3 4 5 6 2 2 3 4 5 6 3 2 3 4 5 6 4 2 3 4 5 6 5 2 3 4 5 6 6 2 3 5 5 6 核为2*2,步长都为1,输出的矩阵大小为 宽度=(输入宽度+2Padding - 核宽度)/1:MAX..

2021-01-15 22:21:36 522

原创 java计算卷积

卷积是如何计算的按照一般的思维都是按照kernel一个一个计算的,但是工业用一般是用minibatch, 为了加速,会专门写针对cpu的底层计算native方法。具体看三种计算代码,没有加入bias。import org.nd4j.linalg.api.buffer.DataType;import org.nd4j.linalg.api.ndarray.INDArray;import org.nd4j.linalg.api.ops.OpContext;import org.nd4j.linal

2021-01-10 21:01:50 709

原创 Java 实现RBF神经网络

用java写了RBFNN的例子,怎么更新参数java 代码如下package deeplearn.rbf;import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Random;/****/p...

2020-12-06 15:30:50 457

原创 李航统计分析AdaBoost 提升书例子java代码

Java代码package xigua;import java.util.Arrays;import scala.Tuple2;/****/public class AdaBoostSquaredExample{ private static int dataLength = 10; private static int numIterations = 6; private static double[] SAMPLE = new doub...

2020-09-14 11:33:15 107

原创 李航统计分析AdaBoost例子java代码

8.1.3例子的java代码package xigua;import java.util.Arrays;import scala.Tuple2;/****/public class AdaBoostExample{ private static int dataLength = 10; private static int numIterations = 3; public static void main( String[] args )...

2020-09-11 10:40:59 159

原创 Java实现LDA在线变分

原理可以看徐亦达的视频和白板推导的视频,论文可以看Online Learning for Latent Dirichlet Allocation, 我没有跟新alpha 如果跟新 可以看http://jonathan-huang.org/research/dirichlet/dirichlet.pdf或者源码代码import java.io.Serializable;import jav...

2019-11-19 11:49:05 307

原创 用Java实现Lazy计算的Base User

用Java写了一个Lazy计算的Base User代码。可以用Spark 和 Spark Graph 实现。import java.util.ArrayList;import java.util.Arrays;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.u...

2019-09-16 16:47:22 419

原创 Java 实现PrefixSpan

用java实现了PrefixSpan,基本是Spark PrefixSpan的逻辑。把List换成RDD基本就是Spark的实现。代码import java.io.Serializable;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util....

2018-12-05 18:07:49 875

原创 scala代码(二)

最近看PrefixSpan 源代码,自己用java重新写了,两个问题浪费了不少时间。1:scala的操作符如果没有赋值,那么是不影响原来的数据结构。可以看成是不可变类。如ReversedPrefix add(int item)        {            assert(item != 0);                List<Integer> newIt...

2018-11-21 13:18:37 566

原创 Spark 实现Apriori

Spark实现Apriori算法,Apriori算法如果支持度高那么效果会很好,如果支持度设置的低,性能会比较差。1:createNewItemsetsFromPreviousOnes需要优化,没有想清楚。2:结果没有转换正确的ID,API可以优化成泛型。3:原理不复杂,代码看看就全懂了。代码import java.io.Serializable;import java.ut...

2018-10-08 16:52:27 1983

原创 Java 程序员看scala 代码的几个小问题

最近自己看Scala 的代码,有两个小的的问题说一下1:FPGrowth 中run的代码的参数是什么,编译器提示是Basket,但是根本没有这个类。看了源码,就是在函数中定义了一个类似别名的class,其实是Iterable<T>。可以传入的参数是比如JavaRDD<List<String>>.2:Scala 中的函数 def extract(    ...

2018-09-05 14:09:26 284

原创 ALS Graph 实现

用Graph实现了ALS,原理和实现都很简单。代码如下import java.io.Serializable;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Random;import org.apache.spark.SparkConf;import org.apa...

2018-07-16 10:53:32 231

原创 ALS java实现

用java实现了简单的ALS,Spark ALS的逻辑,Spark 是RDD分块计算。代码如下,import java.util.ArrayList;import java.util.Arrays;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.uti...

2018-07-03 15:33:05 1218 1

原创 Java如何使用scala的package.scala

Scala 是可以再在每个包定义一个包名字的class,用java代码是可以使用的,import scala.util.hashing.package$;/** *  */public class PackageTest{ public static void main( String[] args ) { System.out.println( package$.MODULE$.byteswa...

2018-06-21 17:31:39 1078

原创 KNN计算

用代码写了暴力计算和分区计算K近邻。1:比较的时候其实可以不用开方。2: Jing Wang† Jingdong Wang‡ 2012的论文Scalable k-NN graph construction for visual descriptors∗ 中复杂的分区没有实现。代码如下,import java.io.Serializable;import java.util.ArrayList;im...

2018-05-14 17:01:04 840

原创 矩阵的协方差计算

矩阵的协方差矩阵是对称阵,用公式Cov(X, Y) = E[X * Y] - E[X] E[Y] 计算,其中E[X]和E[Y]是列的平局值,E[X*Y]是样本方差,可以用变换成Gramian矩阵减去E[X] E[Y] 后除以n-1,这样Cov(X, Y) = E[X * Y] - E[X] E[Y]  变换为 G[X*Y] /(m-1) - (m/m-1)E[X] E[Y].Gramian矩阵就是

2018-05-02 14:51:42 7801

原创 Unorder 值的信息熵增益计算

用Java实现的计算Unorder值的信息熵计算,原理好动,逻辑就是SPARK MLLIB中决策树的逻辑。import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java

2018-03-30 13:26:02 211

原创 用kmeans split 连续值(2)

把KMeans分割连续值想了一下,center的边缘才是分割的界限,上篇的微博完全不对。折旧需要在做KMean 是计算最大距离和最小距离(距离有方向),现在的spark mllib中如果想计算最大和最小距离,那么需要在最后结果在遍历RDD的每个数据,算出属于哪个center,然后算出每个cennter的最大和最小距离。我重新用JAva写了一下KMeans,RDD的输入是RDD, 在mode

2018-03-19 17:53:46 230

原创 用kmeans split 连续值

Sprk 决策树对于连续值的处理使用sort方法,MinMax和ApproxHist方法都没有实现。其实可以使用KMeans 做split。这方面的论文也很多。测试的代码如下,findSplitsForContinuousFeature 的方法就是SPARK DecisionTree 的方法。需要改进的1:Kmeans 计算后的centers 可以直接用作split,是为了一致

2018-03-14 11:24:53 194

原创 LocalLDAModel源码中的getTopicDistributionMethod

LocalLDAModel源码中的getTopicDistributionMethod 方法是这样的 private[spark] def getTopicDistributionMethod(sc: SparkContext): Vector => Vector = {    val expElogbeta = exp(LDAUtils.dirichletExpectation(topi

2018-01-24 11:20:33 624

原创 SparseVector 的遍历

Java写习惯了,看到Vector v = Vectors.dense( new double[]{1,2,3,4,5} ); 遍历时用for (int i=0; i{System.out.println( i + "==" + v.apply( i ) );}这在v是DenseVector时没有问题,但是如果是SparseVector时会有问题,在new SparseVe

2018-01-16 11:09:09 2703

原创 Java实现MultivariateGaussian

用java写了MultivariateGaussian 类,计算高斯密度分布。可以用于高斯混合分布中,代码如下,import java.io.Serializable;import org.apache.spark.mllib.linalg.BLAS;import org.apache.spark.mllib.linalg.DenseMatrix;imp

2017-12-19 14:07:11 422

原创 Java实现混合高斯聚类

用Java重新了混合高斯分类。写完测试用Vectors.dense( 1.0,2.0,3.0 ), Vectors.dense( 2.0,2.0,3.0 ),Vectors.dense( 3.0,2.0,3.0 )做测试,参数为 TestGaussianMixture gaussian = new TestGaussianMixture( 2, 0.01,2,10);然后看model中的wei

2017-12-15 16:24:39 804

原创 如何用反射调用scala方法

scala编译出来的class可以用反射区调用。比如scala代码如下 private def updateWeightsAndGaussians(      mean: BDV[Double],      sigma: BreezeMatrix[Double],      weight: Double,      sumWeights: Double): (Double, M

2017-12-12 11:10:39 2637

原创 MLUtils的fastSquaredDistance方法分析

求两个向量的欧式距离,MLUtil有一个方法是fastSquaredDistance,比如有两个点(a1,b1),(a2,b2),那么欧式距离平方为(a1-a2)^2 + (b1-b2)^2把代码翻译成javapublic static double fastSquaredDistance(Vector v1, Vector v2){double norm1 = Vectors

2017-11-16 14:22:44 1118

原创 Java实现NaiveBayes

用Java写了NaiveByes分类,只实现了二项式模型。其实就是用到了spark的分布计算,计算每个特征下给分类的数据计算概率,然后取最大的。pi[]就是 公式中的logP(B),theta[][] 是logP(A|B),然后计算P(B)*P(A|B)的最大值,取对数,就是pi[i] + sum((计算数据Vector)*theta[i]),结果去最大的,代码中用的是矩阵和向量的乘积。

2017-11-14 14:20:31 574

原创 Java创建ClassTag的方法

Java创建ClassTag的方法,我能找到的有三个方法。其中第三种方法,只要需要classtag的地方都可以直接用,参数都不需要。1:ClassManifestFactory.classType( String.class )。2:ClassTag$.MODULE$.apply( String.class )。3:JavaSparkContext$.MODULE$.fakeClass

2017-10-25 10:56:23 4947

原创 GraphX SVDPlusPlus Java源码

用Java写了SVDPlusPlusimport java.io.Serializable;import java.util.Arrays;import java.util.Random;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apac

2017-10-10 14:07:08 874

原创 PageRank值的和为1

计算图的pageRank值的和为1的前提条件是1:每个节点分配的初始值的和为1.2:计算公式的阿尔法的值需要除以节点的格式。2:每个节点的out degree 不是是0;第一个和第二个条件和我们编程时可以满足,第三个不是我们能决定的。如果不满足第三条件,那么就会有黑洞,往该节点上分配的值,就损失了。我们把out degree为0的节点称为黑洞节点。当然有些特殊的情况,和会大

2017-09-20 15:56:24 1290

原创 GraphX和GraphFrame connectedComponent计算性能对比

测试文件:用Graph rmatGraph 1000000 2000000 去重后 494587个点,1997743个边运行环境:三台服务器,246 GB,core 71.测试三个运行例子1:Graph connectedComponents 2:GraphFrame connectedComponents 3:GraphFrame connectedComponents setAlgor

2017-09-06 18:24:45 3888 1

原创 GraphFrame 实现最小生成树

数据转换GraphFrame 效率太低了,connectedComponents的算法效率惨不忍睹,必须要设置graphx算法。代码如下,import java.util.ArrayList;import java.util.Arrays;import java.util.List;import org.apache.spark.SparkConf;import o

2017-09-05 15:20:36 1432

原创 Graph java 实现最小生成树

算法简单描述为1:创建一个空图。2:把边最短的边加到图中。在选择最短边时,已经加入的不能加,边src和dst边是一个component的不能加。加入到图中的边需要打上标记。3:循环2代码如下import java.io.Serializable;import java.util.Arrays;import java.util.Comparator;impor

2017-09-02 13:39:41 1588

原创 使用GraphFrame 的shortestPaths API 求最短路径

GraphFrame 的shortestPaths 是可以计算节点到节点的最短路径,但是不能计算带权重的最短路径。然后利用BFS方法和find 方法求出路径节点。代码如下import java.util.ArrayList;import java.util.Arrays;import java.util.List;import org.apache.spark.Spar

2017-08-30 21:06:18 2100

原创 GraphFrame BFS 实现最短路径

GraphFrame BFS 实现最短路径,可以加路径。只要把vVertices 变成long,boolwan、value和List代码如下import java.io.Serializable;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import or

2017-08-28 21:16:26 1303

原创 GraphFrame message 实现最短路径

用aggregateMessages 实现最短路径实现,感觉1:无法同时记录路径,或者比较难,要在sendToDst 时加上ID,同时要解析,限制很多。2:性能不如Graph,暴力每次全图发消息,不能在Cluster内进行操作,不能用于大图计算。3:sendToDst  API不友好,个人觉得应该用Function1接口,同时 agg 时用Function2 接口,和Graph一样,回

2017-08-23 10:02:47 626

原创 最短路径问题-Graph Java实现

Graph 最短路径 Java

2017-08-15 20:17:33 2845

空空如也

空空如也

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

TA关注的人

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