• 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.

  • 相关阅读:
    Qt class加载头文件
    Qt 中KeyPressEvent获取不到Key_Space等事件
    如何选择开源许可证?
    C语言实现库函数汇总
    简单背包问题-递归非递归实现
    中点优先顺序遍历数组-递归非递归实现
    稀疏矩阵十字链表表示
    稀疏矩阵线性表示
    KMP模式匹配
    双向链表
  • 原文地址:https://www.cnblogs.com/jiafeng1996/p/15063746.html
Copyright © 2020-2023  润新知