当前位置: 首页 > article >正文

梯度详解与优化实战

什么是梯度

对所有自变量求偏微分构成的向量,它是一个向量(有大小和函数值增长方向)

导数是一个标量
在这里插入图片描述

找最小值点坐标的案例

在这里插入图片描述

import torch

import numpy as np
import matplotlib.pyplot as plt
def himmelblau(x):
    return (x[0]**2+x[1]-11)**2 + (x[0]+x[1]**2-7)**2

x = np.arange(-6,6,0.1)
# print(x)
y = np.arange(-6,6,0.1)

X,Y = np.meshgrid(x,y)
# print(X,"hhhhh\n",Y)

Z = himmelblau([X,Y])

fig = plt.figure("himmelbu")
ax = fig.gca(projection="3d")
ax.plot_surface(X,Y,Z)
ax.view_init(60,-30)

plt.show()

# 使得x包含x,y两个变量,最终要求最小值
x = torch.tensor([4,0],requires_grad=True,dtype=float)

# a.下面这句话相当于 x' = x - 0.001*△x  y'=...
optimizer = torch.optim.Adam([x],lr=1e-3)

for step in range(20000):
    pred = himmelblau(x)

    # 先将梯度清零  防止梯度累积
    optimizer.zero_grad()

    # 生成x y的梯度信息
    pred.backward()

    # 这句话相当于执行a  有了梯度信息后,代入a式求值
    optimizer.step()

    if step%2000==0:
        print('step:{} x={} f(x)={}'.format(step,x.tolist(),pred.item()))



http://www.kler.cn/a/145114.html

相关文章:

  • 如何写美赛(MCM/ICM)论文中的Summary部分
  • HTML<hgroup>标签
  • 01. 计算机系统
  • FAST-DDS and ROS2 RQT connect
  • 如何将 Windows 上的文件传递到 Mac 上
  • 【以音频软件FFmpeg为例】通过Python脚本将软件路径添加到Windows系统环境变量中的实现与原理分析
  • Android 一键屏锁的实现
  • RabbitMQ之发送者(生产者)可靠性
  • Linux常用命令——bg命令
  • MyBatis的功能架构,MyBatis的框架架构设计,Mybatis都有哪些Executor执行器,Mybatis中如何指定使用哪一种Executor执行器
  • ctfshow刷题web入门--1--ljcsd
  • 【版本管理 | Git】Git rebase 命令最佳实践!确定不来看看?
  • P14 C++局部静态变量static延长生命周期
  • ubuntu下配置qtcreator交叉编译环境
  • 企业编码生成程序Python毕业设计
  • js中判断一个变量是数组的方式有哪些
  • [DFS深度优先搜索]集合里的乘法
  • 如何使用nginx部署静态资源
  • 脸爱云一脸通智慧管理平台未授权访问
  • 【web】Fastapi自动生成接口文档(Swagger、ReDoc )
  • 智安网络|如何最大限度地提高企业网络安全水平
  • GPT、GPT-2、GPT-3论文精读笔记
  • oracle rac环境归档日志清除
  • 数据结构与算法【B树】的Java实现+图解
  • el-table表格排序(需要后端判别),el-table导出功能(向后端发送请求)
  • FlinkCDC实现主数据与各业务系统数据的一致性(瀚高、TIDB)