Tensorflow2.0笔记 - 链式法则例子

        本笔记简单记录链式法则的原理,关于链式法则,本身和高等数学中的链式求导法则是一样的,深度学习中相关资料可以参考这里:

【深度学习之美22】BP算法详解之链式法则 - 知乎10.5 什么是计算图?我们知道, 神经网络的学习本质,就是找到网络中神经元之间的最佳连接权值。如何快速找到这个最佳权值,是有学问的。通常我们利用数值微分来计算神经网络权值参数的梯度,用梯度下降等策略来确…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/44138371        

import tensorflow as tf
import numpy as np

tf.__version__

#链式法则
#下面的例子有两个表达式,可以验证
#y2对y1的导数 * y1对w的导数 = y2对w的导数
x = tf.constant(1.)
w1 = tf.constant(2.)
b1 = tf.constant(1.)
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

#分步单独求导
dy2_dy1 = tape.gradient(y2, [y1])[0]
dy1_dw1 = tape.gradient(y1, [w1])[0]
print("dy2/dy1:", dy2_dy1.numpy(), " dy1_dw1:", dy1_dw1.numpy(), "\ndy2/dy1 * dy1/dw1 = ", (dy2_dy1 * dy1_dw1).numpy())
#直接求dy2对w1的导数
dy2_dw1 = tape.gradient(y2, [w1])[0]
print("dy2/dw1:", dy2_dw1.numpy())

运行结果如下:

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 06:48:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 06:48:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 06:48:02       82 阅读
  4. Python语言-面向对象

    2024-03-22 06:48:02       91 阅读

热门阅读

  1. 【Jenkins】Spark on Yarn 部署脚本

    2024-03-22 06:48:02       39 阅读
  2. AUTOSAR XML(通常称为ARXML)

    2024-03-22 06:48:02       41 阅读
  3. 3/21 work

    3/21 work

    2024-03-22 06:48:02      38 阅读
  4. Vue3:路由vue-router的使用

    2024-03-22 06:48:02       41 阅读
  5. 如何在MySQL 8.0版本中开启远程登录

    2024-03-22 06:48:02       37 阅读