• 第三章 神经网络——什么是神经网路&激活函数&3层神经网络的简单实现&手写数字识别


    1.什么是神经网络

    *神经网络是多层感知机,即使用平滑的激活函数的多层网络,神经网络的一个重要性质是它可以自动地从数据中学习到合适的权重参数。

    2.激活函数

    *将感知机的数学式

     

    改写成更加简洁的形式,引入新函数

    上式表明感知机使用阶跃函数作为激活函数,实际上,只要把阶跃函数换成其他函数,即为神经网络

    (1)sigmoid函数

     (2)ReLU函数

            ReLU函数在输入大于0时直接输出该值,在输入小于0时输出0

    (3)恒等函数

       一般而言,回归问题用恒等函数,恒等函数会将输入按原样输出

     

     

    (4)softmax函数

       一般而言,分类问题用softmax函数

    yk为第 k个神经元的输出,分子是输入信号ak 的指数函数,分母是所有输入信号的指数函数的和,解决运算过程中数值过大导致的溢出问题:

    此处令C为输入信号中的最大值

       softmax函数输出是0.0到1.0之间的实数,并且softmax函数的输出值的总和是1,因此可以把softmax函数的输出解释为概率

       一般而言,神经网络只把输出值最大的神经元所对应的类别作为识别结果,即便使用softmax函数,输出值最大的神经元的位置也不会改变,因此神经网络在进行分类时,输出层的softmax函数可以直接省略

    3.3层神经网络的简单实现

    *A=XW+B,中间层使用sigmoid函数作为激活函数,输出层使用恒等函数作为激活函数(输出层的神经元数量需要根据待解决的问题来决定)

    4.手写数字识别

    *MNIST的图像数据是28像素*28像素,各个像素的取值在0-255之间

     *神经网络的推理处理:输入层有784个神经元(28*28),输出层有10个神经元(0-9):

     

  • 相关阅读:
    vue实现聊天栏定位到最底部(超简单、可直接复制使用)
    JavaEE——Servlet生命周期
    Vue 路由 使用
    JS THREE.js间隔执行函数
    AI新时代,新华三存储新思考
    ArrayList和LinkedList的区别
    C#截取某一范围的图
    Java中操作字符串有哪些类?他们之间有什么区别?
    对前端构建工具的一些理解
    【docker】Docker打包SpringBoot镜像
  • 原文地址:https://blog.csdn.net/weixin_47687315/article/details/126650163