zoukankan      html  css  js  c++  java
  • TensorFlow2_200729系列---16、链式法则求多层感知器梯度实例

    TensorFlow2_200729系列---16、链式法则求多层感知器梯度实例

    一、总结

    一句话总结:

    A、y2对y1求导:w2:dy2_dy1 = tape.gradient(y2, [y1])[0]
    B、y1对w1求导:x:dy1_dw1 = tape.gradient(y1, [w1])[0]
    C、直接y2对w1求导:w2*x:dy2_dw1 = tape.gradient(y2, [w1])[0]

    1、数学中的链式求导法则和神经网络中的链式法则?

    链式求导法则:dy/dx=(dy/du)*(du/dx)
    神经网络中的链式法则:相当于y->u->x,也相当于x->u->y,其实u就是神经网络中的中间层

    2、链式法则主要用于多层感知器的梯度推导?

    例如w1->y1->y2,如果需要求dy2/dw1,就可以使用链式求导法则

    3、梯度下降法的实质(比如y和w的关系,损失函数和w的关系)?

    1、损失函数是关于输出y的函数,而y是关于w和b的函数
    2、我们需要求的是∂(loss)/∂(w),来梯度下降,可以通过链式法则,∂(loss)/∂(w)=(∂(loss)/∂(y))*(∂(y)/∂(w))

    二、链式法则求多层感知器梯度实例

    博客对应课程的视频位置:

    import tensorflow as tf 
    
    # x可看做输入
    x = tf.constant(1.)
    # w1和b1看做第一层
    w1 = tf.constant(2.)
    b1 = tf.constant(1.)
    # w2和b2看做第二层
    w2 = tf.constant(2.)
    b2 = tf.constant(1.)
    
    # 自动求梯度
    with tf.GradientTape(persistent=True) as tape:
        tape.watch([w1, b1, w2, b2])
        y1 = x * w1 + b1
        y2 = y1 * w2 + b2
    
        
    # 目标:求y2对w1的梯度
    # ===============================
    
    # y2对y1求导:w2
    dy2_dy1 = tape.gradient(y2, [y1])[0]
    # y1对w1求导:x
    dy1_dw1 = tape.gradient(y1, [w1])[0]
    # 直接y2对w1求导:可以直接展开y2 = (x * w1 + b1) * w2 + b2
    # 同样得到w2*x,当然这里底层肯定也是链式求导
    dy2_dw1 = tape.gradient(y2, [w1])[0]
    
    print(dy2_dy1 * dy1_dw1)
    print(dy2_dw1)
    tf.Tensor(2.0, shape=(), dtype=float32)
    tf.Tensor(2.0, shape=(), dtype=float32)
     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    angularjs学习笔记—工具方法
    js日期格式转换的相关问题探讨
    vue路由原理剖析
    如何减少UI设计师产品与前端工程师的沟通成本
    前端优化带来的思考,浅谈前端工程化
    前端入门方法
    自写juqery插件实现左右循环滚动效果图
    前端大综合
    前端收集
    如何在代码中减少if else语句的使用
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13433331.html
Copyright © 2011-2022 走看看