zoukankan      html  css  js  c++  java
  • UFLDL 教程学习笔记(四)

              课程链接:http://ufldl.stanford.edu/tutorial/supervised/MultiLayerNeuralNetworks/

            这一节前半部分介绍了神经网络模型及前向传导,定义了很多的变量,这些变量到底代表了什么一定要搞懂,否则后半部分的推导就看不懂了。

            首先是active function,一般选的是sigmod,但深度学习中选的是rectified linear function,既没有边界,也不可连续可微:

             

             下面是几个active function的对比图:

            

            rectified linear function 是逐段线性的,且在小于0的地方是饱和的。它在小于0是梯度为0,大于0时梯度为1,在0的地方没有定义

      但在实际过程中没有问题,“we average the gradient over many training examples during optimization”。

            

            后半部分前的是BP,其实就是怎么求w,b.BP算法是通过反向逐层计算残差来计算梯度,具体参考这篇博客http://blog.csdn.net/itplus/article/details/11022243,总结加注释,写的非常非常好

            

            其实整个过程就是,用梯度下降法来求得最优的w和b,但我们只知道最后一个输出,那么隐含的各层的梯度该如何求呢?这就要用到BP了。

            

            然后是作业部分。里面用到几个函数,简单分析下(主要是好多我没看懂)。

            stack = params2stack(params, ei)将一个flattened parameter vector(不明白那个扁平是什么意思)转为a nice "stack" structure,

    ei是auxiliary variable containing the configuration of the network

            函数首先得到网络的深度depth,并初始化一个这么大的cell(stack),取得前一层的大小(单元个数?)prev_size,并定义了一个表示参数向量位置的向量。

            接下来是一个循环。目的是取得所有层的权值与偏差。最后返回的stack包括每层的权值和偏差。

        

            未完待续。。。。

            

            

            

           

  • 相关阅读:
    Mr. Frog’s Game(模拟连连看)
    Comparison of Android versions(strcmp的应用)
    Android热门网络框架Volley详解
    Android中你应该知道的设计模式
    从高德 SDK 学习 Android 动态加载资源
    Android中多线程下载列表的封装实现(含进度反馈)
    判断App是否在后台运行
    信息安全领域有哪些非常棒的资源?
    Android应用发布后的统计——百度移动统计的应用
    面试时,问哪些问题能试出一个Android应用开发者真正的水平?
  • 原文地址:https://www.cnblogs.com/573177885qq/p/4820541.html
Copyright © 2011-2022 走看看