BigDL入门 (3)

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

    在BigDL中,实现了众多的算子,而它们共同继承自一个名为AbstractModule的接口。它对深度学习的基本逻辑,即前向-后向计算进行了抽象和封装。因此,在BigDL中,它既可以表示一个完整的深度学习模型,又可以表示一个独立的算子。该接口主要定义了如下方法:
    forward
    即深度网络的前向运算,该方法的执行包含2步,分别为updateParameter和updateOutput。首先在updateParameter阶段,根据上一次迭代汇总的梯度计算出最新的模型参数,然后在updateOutput阶段,根据当前参数对输入数据按照定义的逻辑进行运算,得到输出。updateOutput方法定义了具体的计算逻辑,需要继承该接口的对象自行实现。

    backward
    即深度学习中的后向运算,该方法的主要作用则在于根据模型输出和目标输出(通常为label)的loss计算出参数的梯度。值得注意的是,由于BigDL采用了数据并行的方式进行分布式训练,因而各个子模型都会计算得到一份独立的梯度。各自的梯度在计算完成后,分别通过Spark中的BlockManager进行写入。待各个子模型完成梯度计算后,另外一个Spark任务负责将BlockManager中的梯度进行聚合汇总,供下一轮迭代时forwad方法使用。

    相关文章

      网友评论

        本文标题:BigDL入门 (3)

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