Scala学习者
文章平均质量分 78
MengPanDeepLearning
这个作者很懒,什么都没留下…
展开
-
跟着吴恩达学深度学习:用Scala实现神经网络-第一课
1. Introduction2017年8月,前百度首席科学家吴恩达先生在twitter上宣布自己从百度离职后的第一个动作:在Coursera上推出一门从零开始构建神经网络的Deep Learning课程,一时间广为轰动。 截止到今天(2017年8月17日星期四),本人已经注册该门课程并且完成了两周的课程学习和作业。在前两周的课程中,吴恩达先生利用Logisti原创 2017-08-17 17:24:59 · 2725 阅读 · 3 评论 -
总结一:神经网络训练过程中可能引起NaN的三种原因总结
在训练神经网络的过程中,经常会遇到当训练进行到一定次数后,cost会变成NaN的问题。在网上搜索相关问题时,发现大多人的观点是认为learningRate过大导致NaN,但是经过我自己摸索,我发现绝大多数情况下NaN是由以下几种情况导致的。learningRate过大只是会造成cost不收敛,在最优点附近震荡。第一种情况:cost的计算公式为:cost = -(y.t * lo原创 2017-08-26 20:16:48 · 20644 阅读 · 4 评论 -
跟着吴恩达学深度学习:用Scala实现神经网络-第二课:用Scala实现多层神经网络
上一章我们讲了如何使用Scala实现LogisticRegression,这一张跟随着吴恩达的脚步我们用Scala实现基础的深度神经网络。顺便再提一下,吴恩达对于深度神经网络的解释是我如今听过的最清楚的课,感叹一句果然越是大牛知识解释得越清晰明了。 本文分为以下四个部分。按照软件开发top-down的思路,第一部分我先展示一下使用构建好的神经网络对Gas Censor数据进行分类的demo原创 2017-08-29 14:00:23 · 2342 阅读 · 0 评论 -
跟着吴恩达学深度学习:用Scala实现神经网络-第三课:消除所有的可变变量,利用scanLeft将神经网络重构为函数式风格
在之前的神经网络实现中,有一些地方用到了修饰符为var的可变变量。比如在神经网络forward的计算过程中,每一层神经层的输入都是上一层的输出。在我固有的编程思维中,不可避免地将变量yPrevious设置成var类型,并且在每一层神经层计算结束后,将本层的计算结果重新赋值给yPrevious以供下一层使用。 但是在函数式编程风格中,这种对可变变量使用的情形其实是可以避免的,我们的解决方案就原创 2017-09-08 23:07:36 · 807 阅读 · 0 评论 -
CS231n的主讲老师Andrej说,要从底层代码开始构建神经网络,而不是仅仅使用框架
本周学完了deeplearning.ai专项课程的第三门课Structuring Deep Learning Projects的第一周课程,在本周的大佬访谈栏目Heroes of Deep Learning中,吴恩达请到了Stanford教CS231n课程的老师Andrej Karpathy来做分享。我之前也完整的学习过CS231n这门课,对课程印象最深刻的就是李飞飞除了第一节课出现过原创 2017-09-20 19:32:35 · 1230 阅读 · 0 评论 -
总结2: Batch Normalization反向传播公式推导及其向量化
1. 背景介绍上周学习了吴恩达的Deep Learning专项课程的第二门课,其中讲到了Batch Normalization(BN)。但在课程视频中,吴恩达并没有详细地给出Batch Normalization反向传播的公式推导,而是从high level的角度解释了为什么Batch Normalization会work,以及如何在TensorFlow等framework中使用Batch Norm原创 2017-09-21 15:47:21 · 8049 阅读 · 11 评论 -
使用Scala的Type Class模式实现神经网络的问题总结(亦shapeless使用小结)
问题背景首先演示一下问题。首先定义一个用作初始化神经网络层的Type Class,名为CanAutoInit,具体代码如下:trait CanAutoInit[-For] { def init(foor: For): Unit}然后再定义神经网络层的抽象类Layer和模板类LayerLike,代码如下:sealed trait La原创 2017-12-11 16:11:11 · 538 阅读 · 0 评论 -
处理Spark的Too large frame报错及优化Shuffle算子的经验总结
背景介绍:最近在对一个Spark任务进行调优时,在260G的输入数据上跑,总会在执行8-9小时后抛出Too large frame的异常。对此异常进行深入了解,也尝试了很多解决办法,现将其总结以备往后参考。 Too large frame异常的原因: Spark抛出Too large frame异常,是因为Spark对每个partition所能包含的数据大小有写死的限制(约为2G...原创 2018-08-28 22:34:09 · 12171 阅读 · 1 评论