zoukankan      html  css  js  c++  java
  • 梯度下降简介

    Outline

    • What's Gradient

    • What does it mean

    • How to Search

    • AutoGrad

    What's Gradient

    • 导数,derivative,抽象表达

    • 偏微分,partial derivative,沿着某个具体的轴运动

    • 梯度,gradient,向量

    f=(fx1;fx2;;fxn)

    19-梯度下降简介-梯度图.jpg

    What does it mean?

    • 箭头的方向表示梯度的方向
    • 箭头模的大小表示梯度增大的速率

    19-梯度下降简介-梯度是什么.jpg

    How to search

    • 沿着梯度下降的反方向搜索

    19-梯度下降简介-2梯度搜索.jpg

    For instance

    θt+1=θtαtf(θt)

    19-梯度下降简介-二维梯度下降1.gif

    19-梯度下降简介-二维梯度下降2.gif

    AutoGrad

    • With Tf.GradientTape() as tape:

      • Build computation graph
      • loss=fθ(x)
    • [w_grad] = tape.gradient(loss,[w])

    import tensorflow as tf
    
    w = tf.constant(1.)
    x = tf.constant(2.)
    y = x * w
    
    with tf.GradientTape() as tape:
        tape.watch([w])
        y2 = x * w
    
    grad1 = tape.gradient(y, [w])
    grad1
    
    [None]
    
    with tf.GradientTape() as tape:
        tape.watch([w])
        y2 = x * w
    
    grad2 = tape.gradient(y2, [w])
    grad2
    
    [<tf.Tensor: id=30, shape=(), dtype=float32, numpy=2.0>]
    
    try:
        grad2 = tape.gradient(y2, [w])
    except Exception as e:
        print(e)
    
    GradientTape.gradient can only be called once on non-persistent tapes.
    
    • 永久保存grad
    with tf.GradientTape(persistent=True) as tape:
        tape.watch([w])
        y2 = x * w
    
    grad2 = tape.gradient(y2, [w])
    grad2
    
    [<tf.Tensor: id=35, shape=(), dtype=float32, numpy=2.0>]
    
    grad2 = tape.gradient(y2, [w])
    grad2
    
    [<tf.Tensor: id=39, shape=(), dtype=float32, numpy=2.0>]
    

    2nd-order

    • y = xw + b

    • yw=x

    • 2yw2=yw=Xw=None

    with tf.GradientTape() as t1:
        with tf.GradientTape() as t2:
            y = x * w + b
        dy_dw, dy_db = t2.gradient(y, [w, b])
    

    d2y_dw2 = t1.gradient(dy_dw, w)

  • 相关阅读:
    测试:安装测试用例
    测试:界面测试
    软件项目管理:什么是baseline
    测试:fiddler使用
    android adb常用指令
    sqlite语句主页
    几条常见的数据库分页 SQL 语句
    linux下tomcat无法访问问题(换一种说法:无法访问8080端口)
    eclipse中svn的各种状态图标详解
    Tomcat项目部署方式
  • 原文地址:https://www.cnblogs.com/abdm-989/p/14123288.html
Copyright © 2011-2022 走看看