博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala - Spark Lambda“goesto“ => 分析
阅读量:5100 次
发布时间:2019-06-13

本文共 1276 字,大约阅读时间需要 4 分钟。

1 /// 定义一个函数AddNoise,参数分别为rdd,Fraction。其中rdd为(BreezeDenseMatrix,  BreezeDenseMatrix)元组构成的RDD。Fraction为一个Double。返回一个(BreezeDenseMatrix,  BreezeDenseMatrix)元组构成的RDD。 2 def AddNoise(rdd: RDD[(BDM[Double], BDM[Double])], Fraction: Double): RDD[(BDM[Double], BDM[Double])] = { 3 /// 定义返回值临时储存,它由rdd中每个元素实现f=>STH构成 4     val addNoise = rdd.map { f => 5 /// f中第二部分数据,为一个BreezeDenseMatrix 6       val features = f._2 7 /// 生成一个BreezeDenseMatrix,由随机数填充 8       val a = BDM.rand[Double](features.rows, features.cols) 9 /// 定义一个BreezeDenseMatrix a1,其中元素为bool型。如果a中对应元素大于Fraction,则为true。否则为false。10       val a1 = a :>= Fraction11 /// 定义一个RDD d1,由a1中元素经过如下运算后填充:如果当前元素为true,则为1.0,否则为0。12       val d1 = a1.data.map { f => if (f == true) 1.0 else 0.0 }13 /// 新建一个BreezeDenseMatrix,分别由于features相应位置对应的d1元素填充。14       val a2 = new BDM(features.rows, features.cols, d1)15 /// :*表示各元素依次相乘。得到BreezeDenseMatrix。16       val features2 = features :* a217 /// 返回(BreezeDenseMatrix,BreezeDenseMatrix)构成的RDD。作为函数返回值,进而更新addNoise。18       (f._1, features2)19     }20 /// 返回运算后的结果,作为函数返回值。21     addNoise22   }

这段代码是用Scala写的运行与Spark上的,NN算法中AddNoise实现。用来完成DenoiseAutoencoder的随机噪声添加。

思想很简单,但却把Spark的map操作和Scala的lambda运算符的用法展现的淋漓尽致,值得学习。

代码来自。

个人分析,有误请指正。

 

转载于:https://www.cnblogs.com/suanec/p/4771737.html

你可能感兴趣的文章
《算法4》回顾(一)
查看>>
Repeater用ul li,一行显示多条数据
查看>>
Java并发(四):并发集合ConcurrentHashMap的源码分析
查看>>
5. Longest Palindromic Substring
查看>>
Maven 三种archetype说明
查看>>
oracle自关联表的子删父变功能实现
查看>>
程序员需要具备的基本技能
查看>>
jsoncpp cmake
查看>>
Web消息主体风格(Message Body Style)
查看>>
eclipse- 智能提示设置
查看>>
回调函数实例——数学计算
查看>>
C#文件路径乱码
查看>>
俞伯牙摔琴谢知音的故事
查看>>
【简单dp】2080->最长公共子序列问题 动态规划
查看>>
数据库隔离级别
查看>>
C - Bear and Five Cards
查看>>
招聘工作告一段落
查看>>
druid数据源的加密解密工具
查看>>
swfupload详解
查看>>
php模拟多线程
查看>>