0.1 tensorflow例1-梯度下降法

例1:求函数y= (x^2-9)^2的极值位置,即求其导数为0的值y'=4*x*(x^2-9)。

定义loss = y'^2. 其极值位置在x轴-3,0,3位置。

代码如下,效果良好,从5开始可以找到3的极值位置。从-5开始可以-3的极值位置;从0.5开始找到极值点0的位置。

python 复制代码
import numpy as np
import tensorflow as tf
from matplotlib import pyplot as plt
#'求 y= (x^2-9)^2  的最小值'
#'即求梯度:y'=4*x*(x^2-9)=0的位置

x = tf.Variable(tf.constant(-5,dtype=tf.float32))
lr=0.01
epoch = 1000
for step in range(epoch):
    with tf.GradientTape() as tape:
        loss = tf.square( 4*x*(x*x-9))
    grads = tape.gradient(loss,x)
    x.assign_sub(lr*grads/np.abs(grads))
    print("After %s epoch, x is %.2f, loss is %.2f" %(step,x.numpy(),loss))

xRange = tf.range(-5,5,0.1)
x1=[]
y1=[]
y2=[]
for xpos in xRange:
    x1.append(xpos)
    y1.append( np.square (xpos*xpos - 9))
    y2.append( 4*xpos*(xpos*xpos - 9)       )
plt.plot(x1,y1,'-',x1,y2,'+')
plt.axhline()
plt.axvline()
plt.show()

下图打印了函数以及其导数的图片

相关推荐
寻星探路2 分钟前
【算法进阶】滑动窗口与前缀和:从“和为 K”到“最小覆盖子串”的极限挑战
java·开发语言·c++·人工智能·python·算法·ai
木木木一2 分钟前
Rust学习记录--C10 泛型,Trait,生命周期
python·学习·rust
予枫的编程笔记2 分钟前
【注册技巧】stackoverflow无法注册解决方案
人工智能·stackoverflow·注册技巧
WangYaolove13143 分钟前
基于深度学习的身份证识别考勤系统(源码+文档)
python·mysql·django·毕业设计·源码
qwerasda1238527 分钟前
【深度学习】如何使用YOLO11-RevCol模型进行伤口类型识别与分类 擦伤、瘀伤、烧伤、切割伤以及正常状态检测_2
人工智能·深度学习·分类
柳智敏min8 分钟前
AI学术工具:论文写作的“得力编辑”而非“全程代笔”
人工智能
数字孪生家族9 分钟前
基于视频孪生与空间智能深度融合的智慧城市解决方案
人工智能·智慧城市·数字孪生智慧城市·智慧城市建设方案·视频孪生空间智能双驱动
weixin_4450547211 分钟前
力扣热题53
开发语言·python
tzc_fly11 分钟前
多模态慢思考,原子步骤推理
人工智能
cg501711 分钟前
输入模型的训练数据需要变成什么样(基于bert模型)
人工智能·深度学习·bert