深度学习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()))
相关推荐
ccLianLian1 分钟前
计算机视觉·TagCLIP
人工智能·算法
aneasystone本尊7 分钟前
重温 Java 21 之虚拟线程
人工智能
geneculture8 分钟前
官学商大跨界 · 产学研大综合:融智学新范式应用体系
大数据·人工智能·物联网·数据挖掘·哲学与科学统一性·信息融智学
这张生成的图像能检测吗11 分钟前
(综述)基于深度学习的制造业表面缺陷检测图像合成方法综述
人工智能·计算机视觉·图像生成·工业检测·计算机图像学
草莓熊Lotso12 分钟前
C++ 继承特殊场景解析:友元、静态成员与菱形继承的底层逻辑
服务器·开发语言·c++·人工智能·经验分享·笔记·1024程序员节
安如衫13 分钟前
【学习笔记更新中】Deeplearning.AI 大语言模型后训练:微调与强化学习导论
人工智能·llm·sft·后训练·deepseek
IT_陈寒24 分钟前
5个Python 3.12新特性让你的代码效率提升50%,第3个太实用了!
前端·人工智能·后端
love is sour25 分钟前
理解全连接层:深度学习中的基础构建块
人工智能·深度学习
周杰伦_Jay25 分钟前
【Python后端API开发对比】FastAPI、主流框架Flask、Django REST Framework(DRF)及高性能框架Tornado
数据结构·人工智能·python·django·flask·fastapi·tornado
chenchihwen35 分钟前
AI代码开发宝库系列:PDF文档解析MinerU
人工智能·python·pdf·dashscope