14:2D函数优化实例

1:2D函数Himmelblau

(1)用3D曲线表示2D函数

 

4个最小解

 

 

 (2)pytorch中寻找最小解

第一步:先将2D函数Himmelblau用pytorch实现,并且将其进行可视化

 

 【注】x,y分别是一个点的x坐标和y坐标。np.meshgrid(x,y)可以实现将x,y的范围传入其中。X和Y两张map分别存储了x,y,其形状分别为shape为【120,120】的tensor,两个map相同处拼接x,y构成一个点坐标(x,y)。

X,Y即为点的横坐标和纵坐标。

第二步:

 

 

 [注]torch.optim优化算法之optim.Adam()详细参考https://blog.csdn.net/kgzhang/article/details/77479737

上图调用该优化算法之后通过step()函数可以实现如下步骤对进行更新:

 

 【注本人也不太理解】optimizer.zero_grad()梯度归零原因:因为训练的过程通常使用mini-batch方法,所以如果不将梯度清零的话,梯度会与上一个batch的数据相关,因此该函数要写在反向传播和梯度下降之前。

[注]pred.backward()是求解x,y的梯度。即:预测试pred对x,y进行微分,对x,y进行优化,得到最小pred.

posted @ 2021-07-26 23:08  收购阿里巴巴  阅读(48)  评论(0编辑  收藏  举报