深度学习pytorch——2D函数优化实例(持续更新)

课程:课时46 优化问题实战_哔哩哔哩_bilibili

这就是我们今天要求的2D函数:

下图是使用python绘制出来的图像:

但是可以看出有4个最小值,但是还是不够直观,还是看课程里面给的比较好,蓝色是最低点位置:
课时46 优化问题实战_哔哩哔哩_bilibili

实际求的最小值:

代码示例:

python 复制代码
import torch
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 定义函数
def himmelblau(x):
    return (x[0]**2 + x[1] - 11)**2 + (x[0] + x[1]**2 -7)**2

# 生成X、Y数据列表
x = np.arange(-6,6,0.1)
y = np.arange(-6,6,0.1)
print('x.shape:',x.shape,';y.shape:',y.shape)
X, Y = np.meshgrid(x,y)             # 将X、Y进行网格化,将一维数组变为二维数组
print('X.map:',X.shape,';Y.map:',Y.shape)
Z = himmelblau([X,Y])                   # 计算Z

fig = plt.figure('himmelblau')          # 创建himmelblau图
ax = fig.add_subplot(projection='3d')   # 获得当前极轴

ax.plot_surface(X,Y,Z)                  # 绘制三维平面
ax.view_init(60,-30)                    # 确定视图的角度
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.show()

# 2D函数优化
x = torch.tensor([4.,0.],requires_grad=True)        # 初始化x值,requires_grad=True代表需要梯度信息
                                                          # 可以尝试改变初始化x的值,会得到不一样的结果,因此初始化值是十分重要的
optimizer = torch.optim.Adam([x],lr=1e-3)         # 初始化优化器
for step in range(20000):
    pred = himmelblau(x)
    optimizer.zero_grad()                                 # 当网络参量进行反馈时,梯度是被积累的而不是被替换掉,这里即每次将梯度设置为0
    pred.backward()                                       # 调出x、y的梯度信息
    optimizer.step()                                      # 根据优化信息更新优化的值x[0] x[1]

    if step%2000 == 0:                                    # 每2000个打印一组值
        print('step {}:x={},f(x)={}'.format(step,x.tolist(),pred.item()))
相关推荐
阿里云大数据AI技术几秒前
免费领票!9月22日-24日,2026云栖大会杭州见
大数据·人工智能·agent
circuitsosk6 分钟前
AI输出的“质检员”:构建智能体质量评估、异常检测与人工兜底的三层防线
人工智能·python·microsoft·正则表达式·langchain
IvanCodes7 分钟前
我做了一个软著 Skill,可以一键生成申请材料
人工智能·agent
狂奔蜗牛(bradley)9 分钟前
RKNN‑Toolkit2 模型转换全流程
人工智能
双星系统12 分钟前
双臂机器人迎来广阔应用风口!既是工业柔性主力,也是人形机器人优质上肢配件
人工智能·机器人
羚羊角uou18 分钟前
【AI agent】RAG 全链路深度详解及RAG调优策略
人工智能
甲维斯22 分钟前
国内外模型3D台球大赛,DS垫底,Claude最强!
人工智能·游戏开发
CTA终结者32 分钟前
先用小策略练清条件和动作
人工智能·python
hhzz42 分钟前
《深度学习框架PyTorch入门与实践》系列:11-实战猫狗大战之可复用的PyTorch项目架构
人工智能·pytorch·深度学习
Bruce_Liuxiaowei44 分钟前
从零到可运行:基于 Vue3 + FastAPI + DeepSeek-V3 的 AI 英语单词学习系统全栈实战
人工智能·python·学习·fastapi·全栈·智能体