• Scala


     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 :>= Fraction
    11 /// 定义一个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 :* a2
    17 /// 返回(BreezeDenseMatrix,BreezeDenseMatrix)构成的RDD。作为函数返回值,进而更新addNoise。
    18       (f._1, features2)
    19     }
    20 /// 返回运算后的结果,作为函数返回值。
    21     addNoise
    22   }

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

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

    代码来自sunbow0

    个人分析,有误请指正。

  • 相关阅读:
    BZOJ2870 最长道路
    为什么要设置Java环境变量
    JavaMail收发邮件的步骤
    Java 7开发者预览版发布
    J2EE的13种核心技术
    jdk1.5、1.6、1.7新特性详细介绍(整理)
    JAVAEE5 VS JAVAEE6
    TOCMAT的web.xml详解(转贴)
    setAttribute()和getAttribute()
    jsp servlet的区别和联系
  • 原文地址:https://www.cnblogs.com/suanec/p/4771737.html
Copyright © 2020-2023  润新知