BigDL入门 (1)

作者: 飞驰2019 | 来源:发表于2019-04-18 20:36 被阅读0次

    在BigDL中,完成一次完整的深度学习过程共需要如下几步:

    1. 构建数据集:

    将训练数据转换成模型可以处理的类型,在Spark环境下即为Sample类型的RDD。

    2. 编写模型

    使用内置的类Keras接口编写深度模型。

    3. 模型训练

    选择合适的损失函数和优化方法(SGD,ADAM等等),对模型进行训练。

    4. 模型Serving (可选) 

    加载训练好的模型,供业务使用。

    一个完整的例子:

    例子使用iris数据集,该数据集收集了150条鸢尾花卉的数据,每条记录包含4个属性,分别为包含花萼长度、花萼宽度、花瓣长度和花瓣宽度,目标在于预测鸢尾花卉属于三个类别中的哪一类。在下面的例子中,将展示如何通过BigDL构建一个简单的神经网络用来完成这项任务。

    首先,需要在项目中引入BigDL的依赖,以Maven为例:

   <dependency> 

       <groupId>com.intel.analytics.bigdl</groupId>

       <artifactId>bigdl-SPARK_2.2</artifactId> 

       <version>0.7.2</version>

 </dependency> 

    然后,需要对运行时进行初始化。对于Spark应用而言,主要是SparkContext的初始化:

val sparkConf = new SparkConf()

    .setMaster("local[2]")

    .setAppName("IrisExample")

val sc = new SparkContext(Engine.createSparkConf(sparkConf))

Engine.init

    接下来,加载需要的数据,然后构建模型。在本例子中,使用BigDL内置的Keras风格接口来定义模型:

val sampleRDD = sc.textFile("data/iris.data", 1).filter(!"".equals(_)).map(line => {

    val subs = line.split(",")

    val feature=Tensor(subs.slice(0, 4).map(_.toFloat), Array(4))

    val getLabel:String => Float = {

        case "Iris-setosa" => 1.0f

        case "Iris-versicolor" => 2.0f

        case "Iris-virginica" => 3.0f

    }

    Sample[Float](feature, Tensor(Array(getLabel(subs(4))), Array(1)))}

)

val Array(trainingRDD, valRDD)=sampleRDD.randomSplit(Array(0.9, 0.1))

val model = Sequential[Float]() 

model.add(Dense(40, inputShape = Shape(4), activation = "relu")) 

model.add(Dense(20, activation = "relu")) 

model.add(Dense(3, activation = "softmax")) 

model.compile("adam", "sparse_categorical_crossentropy", Array("accuracy"))

    最后,对模型进行评估和训练,仍然使用Keras风格接口:

    model.fit(trainingRDD, batchSize=50, nbEpoch=50, validationData = valRDD)            

    相关代码可以在github中找到,不妨动手一试。

相关文章

  • BigDL入门 (1)

    在BigDL中,完成一次完整的深度学习过程共需要如下几步: 1. 构建数据集: 将训练数据转换成模型可...

  • BigDL入门 (2)

    模型构建 在BigDL中,模型构建的API共分为两层,即torch风格的低级API和keras风格的高级A...

  • BigDL入门 (3)

    在BigDL中,实现了众多的算子,而它们共同继承自一个名为AbstractModule的接口。它对深度学习的基本逻...

  • 从源码编译Intel BigDL深度学习库

    BigDL-Build from Source Code 下载BigDL源码 可以从github下载BigDL的源...

  • 用IDEA开发BigDL——Scala

    综述 开发1.下载BigDL2.导入项目到IDEA3.配置IDEA 综述 BigDL 是一种面向 Apache S...

  • BigDL入门 (5)- 参数优化

    在参数优化过程中,多个子模型的协同是最大的难点。对于采用同步迭代的框架来说,参数同步阶段的性能损耗往往容易成为...

  • Intel-BigDL 训练过程(DistriOptimize)

    Intel-BigDL DistriOptimizer内部过程分析 Intel深度学习库BigDL在分布式模式下进...

  • BigDL入门 (4)- 优化器Optimizer

    优化器是模型训练的主要承担者,当模型输出的数据通过损失函数得到梯度后,优化器根据相应的优化算法计算得到新的模型参数...

  • BigDL Programming Guide

    本文为官方文档译文 Tensor Table Module Create modules Construct co...

  • BigDL吐槽

    人无完人,同样也没有完美的技术。尽管BigDL尽可能地实现了简单易用,然而仍然存在一些不那么友好的地方。 ...

网友评论

    本文标题:BigDL入门 (1)

    本文链接:https://www.haomeiwen.com/subject/slagwqtx.html