zoukankan      html  css  js  c++  java
  • tensorflow(二十二):梯度下降,求解梯度

    一、梯度的概念

     

     

     

     

    二、tensorflow求梯度

    import tensorflow as tf
    import os
    
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
    
    w = tf.constant(1.)
    x = tf.constant(2.)   #注意这里只能是浮点数,是整数的话结果返回None。
    y = x*w
    
    #梯度的计算过程要包在这个里面。
    with tf.GradientTape() as tape:
        tape.watch([w])
        y2 = x*w
    
    #[grad1] = tape.gradient(y, [w]) #这里参数[w]为list列表。最终返回的也是list类型。
    #print(grad1)                    #这里返回的为None,为什么呢?因为tape.gradient()中药求解的y,并没有包在里面,而是y2
    [grad2] = tape.gradient(y2, [w]) #这里参数[w]为list列表。最终返回的也是list类型。y2放进去了
    print(grad2)

     

     三、求二阶导

    import tensorflow as tf
    import os
    
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
    
    w = tf.Variable(1.)  #只能是小数
    b = tf.Variable(2.)
    x = tf.Variable(3.)
    
    with tf.GradientTape() as tape1:
         with tf.GradientTape() as tape2:
              y = x*w +b
         #dy_dw, dy_db = tape2.gradient(y, [w, b])    #都可以
         [dy_dw, dy_db] = tape2.gradient(y, [w, b])
    #d2y_d2w = tape1.gradient(dy_dw, [w])             #都可以
    d2y_d2w = tape1.gradient(dy_dw, w)
    
    print(dy_dw)
    print(dy_db)
    print(d2y_d2w)
  • 相关阅读:
    毕业设计后续工作目标
    毕业设计第二周每天工作
    毕业设计第二次本周目标
    毕业设计第一周每天工作
    毕业设计第一次本周目标
    MyEclipse在删除文件后servers报错问题解决
    Tomcat问题解决
    MVC设计模式授权第三方登录
    算法评估
    Spark 配置参数
  • 原文地址:https://www.cnblogs.com/zhangxianrong/p/14629362.html
Copyright © 2011-2022 走看看