1.19. 2D函数优化实例

为了演示优化神经网络参数得到loss极小值的过程,和不同初始值可能产生不同的极值点,在此引入了如下图所示函数:

从图中可以看出该函数2D图像呈碗状,有四个极小值点,它的极值点有:

接下来我们通过求解该函数极小值,来测试我们设计的优化器效果如何。

画图代码:

# -*- coding: UTF-8 -*-import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3Ddef himmelblau(x):return (x[0] ** 2 + x[1] - 11) ** 2 + (x[0] + x[1] ** 2 - 7) ** 2
#图示函数定义x = np.arange(-6, 6, 0.1)                     #生成范围-6到6的点 每个点间隔0.1 共120个点
y = np.arange(-6, 6, 0.1)                     #生成范围-6到6的点 每个点间隔0.1 共120个点
print('x,y range:', x.shape, y.shape)
X, Y = np.meshgrid(x, y)                      #把x,y拼接在一起 生成网格坐标 [120,120] 相当于120行 120列矩阵
print('X,Y maps:', X.shape, Y.shape)
Z = himmelblau([X, Y])                        #传入[120,120]的坐标得到对应的函数值fig = plt.figure('himmelblau')
ax = fig.gca(projection='3d')                 #生成的是3d图像
ax.plot_surface(X, Y, Z)                      #传入 x y z 坐标
ax.view_init(60, -30)
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.show()"""
中间出现错误:
ValueError: Unknown projection '3d'解决办法是加入:
from mpl_toolkits.mplot3d import Axes3D
"""

在上面代码的基础上添加如下代码:

import torch
# 不同初始化  会找到不同的解
x = torch.tensor([0., 0.], requires_grad=True)
# x,y初始化  需要梯度信息
optimizer = torch.optim.Adam([x], lr=1e-3)
# 初始化优化器 对x,y进行优化 学习率为0.001
for step in range(20000):    #梯度下降 进行20000次pred = himmelblau(x)optimizer.zero_grad()    # 梯度信息清零pred.backward()          # 反向传播  得到梯度optimizer.step()         # 自动完成参数的更新if step % 2000 == 0:      # 每2000次打印一次信息print ('step {}: x = {}, f(x) = {}'.format(step, x.tolist(), pred.item()))

输出结果:

step 0: x = [0.0009999999310821295, 0.0009999999310821295], f(x) = 170.0
step 2000: x = [2.3331806659698486, 1.9540694952011108], f(x) = 13.730916023254395
step 4000: x = [2.9820079803466797, 2.0270984172821045], f(x) = 0.014858869835734367
step 6000: x = [2.999983549118042, 2.0000221729278564], f(x) = 1.1074007488787174e-08
step 8000: x = [2.9999938011169434, 2.0000083446502686], f(x) = 1.5572823031106964e-09
step 10000: x = [2.999997854232788, 2.000002861022949], f(x) = 1.8189894035458565e-10
step 12000: x = [2.9999992847442627, 2.0000009536743164], f(x) = 1.6370904631912708e-11
step 14000: x = [2.999999761581421, 2.000000238418579], f(x) = 1.8189894035458565e-12
step 16000: x = [3.0, 2.0], f(x) = 0.0
step 18000: x = [3.0, 2.0], f(x) = 0.0

22_2D函数优化实例相关推荐

  1. ABC人工蜂群算法求解函数优化实例C++(2020.11.5)

    ABC人工蜂群算法C++ 人工蜂群算法 1.原理 2.算法流程 3.函数优化实例 4.求解函数优化的ABC源代码C++ 人工蜂群算法 1.原理 最常见的基于蜜蜂采蜜行为的蜂群算法是Karaboga(2 ...

  2. mysql 组合索引 or_mysql索引优化实例(单列索引与组合索引)

    索引一般用于在数据规模大时对查询进行优化的一种机制,对于一般的查询来说,mysql会去遍历整个表,来查询符合要求的结果: 如果借助于mysql索引,mysql会将要索引的字段按照一定的算法进行处理,并 ...

  3. Python数模笔记-模拟退火算法(1)多变量函数优化

    1.模拟退火算法 模拟退火算法借鉴了统计物理学的思想,是一种简单.通用的启发式优化算法,并在理论上具有概率性全局优化性能,因而在科研和工程中得到了广泛的应用. 退火是金属从熔融状态缓慢冷却.最终达到能 ...

  4. 蚁群算法解决多峰函数优化问题

    一.多峰优化问题概述         多峰函数优化问题在实际应用中大量存在,多峰函数是指有多个极值点的函数,这些极值点可能相同,也可能不同. 二.蚁群问题解决函数多峰寻优问题思想         以一 ...

  5. 用matlab进行批量优化,多目标优化实例和matlab程序

    <多目标优化实例和matlab程序>由会员分享,可在线阅读,更多相关<多目标优化实例和matlab程序(2页珍藏版)>请在人人文库网上搜索. 1.NSGA-II 算法实例目前的 ...

  6. 【视频】支持向量机SVM、支持向量回归SVR和R语言网格搜索超参数优化实例

    最近我们被客户要求撰写关于SVM的研究报告,包括一些图形和统计输出. 什么是支持向量机 (SVM)? 我们将从简单的理解 SVM 开始. [视频]支持向量机SVM.支持向量回归SVR和R语言网格搜索超 ...

  7. python输入字符串转换为公式_将python字符串转化成长表达式的函数eval实例

    爬一个网页时,要保存的数据都没有encode,就导致保存下来的中文都变成unicode了... 那么,怎么把一个表示字符串的unicode还原成unicode呢? 函数eval(expression) ...

  8. R语言optim函数进行函数优化实战(和lm函数进行对比)

    R语言optim函数进行函数优化实战(和lm函数进行对比) 目录 R语言optim函数进行函数优化实战(和lm函数进行对比) #仿真数据

  9. python命名空间和闭包_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...

    本文实例讲述了Python函数基础用法.分享给大家供大家参考,具体如下: 一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点: 1.约束函数的调用者必须按照Kye=value的 ...

最新文章

  1. c# 元组Tuple
  2. python日历gui_python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例...
  3. 出席国际海水稻论坛-林裕豪:从玉农业谋定陆丰稻作改良
  4. Linux下配置CollabNet Subversion Edge
  5. 腾讯视频如何编辑自我介绍
  6. 大数据学习笔记57:Java代码操作HBase
  7. 6. 成交量基础分析
  8. mysql中的存储机制_Mysql的存储引擎
  9. PHP文件系统-文件路径操作和权限
  10. 段钢荣获 WIT Awards 2018 年度安全人物|FIT 2019
  11. ToolTip特效 JavaScript 盗取厦门人才网的特效
  12. 构建安全可控的网络环境,国产化网管势在必行
  13. javaMail学习(一)——易邮邮件服务器的使用
  14. 中心移动平均_Excel数据分析——移动平均法预测分析
  15. Android 分享到LINE
  16. (八十一)探索hidl-gen使用及IWifi.hal 实现
  17. 300辆无人车200万公里路测零事故,首次揭秘背后整套安全保障方案
  18. 元素周期表的118个化学元素
  19. OpenCV学习笔记(三)——图像像素(图像的最大(小)值、均值、标准差、比较运算、逻辑运算、图像二值化)
  20. www-authenticate

热门文章

  1. 比较好的php源码,目前市面上能拿到的最好的PHP跑F分源码下载
  2. python爬虫登陆网页版腾讯课堂
  3. odoo中的序列(自动增长的序列以及有条件的序列,ir.sequence)
  4. 漫漫MySQL之路(1.MySQL简介和诞生)
  5. python读取word中后缀名docx的文件的表格
  6. VTK:绘制一个棋盘并用两个平面对其进行剪辑用法实战
  7. boost::BoostRegexConcept相关的测试程序
  8. boost::range_result_iterator相关的测试程序
  9. boost::mp11::mp_partition_q相关用法的测试程序
  10. boost::geometry::segment_intersection_points用法的测试程序