求函数最小值-torch版

目标:torch实现下面链接中的梯度下降法

先计算 y=x^2 的导函数 y{}'=2x ,然后计算导函数 在x_{0}=7.5处的梯度 (导数)

让 x_{0}沿着 梯度的负方向移动

x\leftarrow x-y{}'x_{0}

自变量x 的更新过程如下

x_{1}\leftarrow x_{0}-y{}'_{x0}

x_{2}\leftarrow x_{1}-y{}'_{x1}

x_{3}\leftarrow x_{2}-y{}'_{x2}

\cdot \cdot \cdot

x_{n}\leftarrow x_{n-1}-y{}'_{x_{n-1}}

torch代码实现如下

import torchx = torch.tensor([7.5],requires_grad=True)
# print(x.grad)optimizer = torch.optim.SGD([x], lr=1)print('x_0 = {}'.format(x))for i in range(10):y = x * xoptimizer.zero_grad()y.backward()optimizer.step()print('x_{} = {}'.format(i+1,x))

运行效果如下:

x_0 = tensor([7.5000], requires_grad=True)
x_1 = tensor([-7.5000], requires_grad=True)
x_2 = tensor([7.5000], requires_grad=True)
x_3 = tensor([-7.5000], requires_grad=True)
x_4 = tensor([7.5000], requires_grad=True)
x_5 = tensor([-7.5000], requires_grad=True)
x_6 = tensor([7.5000], requires_grad=True)
x_7 = tensor([-7.5000], requires_grad=True)
x_8 = tensor([7.5000], requires_grad=True)
x_9 = tensor([-7.5000], requires_grad=True)
x_10 = tensor([7.5000], requires_grad=True)

给梯度加系数

我们可以给 梯度 加个系数,如下

x_{1}\leftarrow x_{0}-0.01*y{}'_{x0}

x_{2}\leftarrow x_{1}-0.01*y{}'_{x1}

x_{3}\leftarrow x_{2}-0.01*y{}'_{x2}

\cdot \cdot \cdot

x_{n}\leftarrow x_{n-1}-0.01*y{}'_{x_{n-1}}

torch代码实现如下

import torchx = torch.tensor([7.5],requires_grad=True)
# print(x.grad)optimizer = torch.optim.SGD([x], lr=0.01)print('x_0 = {}'.format(x))for i in range(10):y = x * xoptimizer.zero_grad()y.backward()optimizer.step()print('x_{} = {}'.format(i+1,x))

运行效果如下:

x_0 = tensor([7.5000], requires_grad=True)
x_1 = tensor([7.3500], requires_grad=True)
x_2 = tensor([7.2030], requires_grad=True)
x_3 = tensor([7.0589], requires_grad=True)
x_4 = tensor([6.9178], requires_grad=True)
x_5 = tensor([6.7794], requires_grad=True)
x_6 = tensor([6.6438], requires_grad=True)
x_7 = tensor([6.5109], requires_grad=True)
x_8 = tensor([6.3807], requires_grad=True)
x_9 = tensor([6.2531], requires_grad=True)
x_10 = tensor([6.1280], requires_grad=True)

调迭代次数

发现 x变化的很慢,我们可以增加迭代次数,如下

import torchx = torch.tensor([7.5],requires_grad=True)
# print(x.grad)optimizer = torch.optim.SGD([x], lr=0.01)print('x_0 = {}'.format(x))for i in range(200):y = x * xoptimizer.zero_grad()y.backward()optimizer.step()print('x_{} = {}'.format(i+1,x))

运行结果如下:

x_0 = tensor([7.5000], requires_grad=True)
x_1 = tensor([7.3500], requires_grad=True)
x_2 = tensor([7.2030], requires_grad=True)
...
x_199 = tensor([0.1346], requires_grad=True)
x_200 = tensor([0.1319], requires_grad=True)

调梯度系数

我们把 0.01 换成 0.1 试试

import torchx = torch.tensor([7.5],requires_grad=True)
# print(x.grad)optimizer = torch.optim.SGD([x], lr=0.1)print('x_0 = {}'.format(x))for i in range(10):y = x * xoptimizer.zero_grad()y.backward()optimizer.step()print('x_{} = {}'.format(i+1,x))

运行结果如下:

x_0 = tensor([7.5000], requires_grad=True)
x_1 = tensor([6.], requires_grad=True)
x_2 = tensor([4.8000], requires_grad=True)
x_3 = tensor([3.8400], requires_grad=True)
x_4 = tensor([3.0720], requires_grad=True)
x_5 = tensor([2.4576], requires_grad=True)
x_6 = tensor([1.9661], requires_grad=True)
x_7 = tensor([1.5729], requires_grad=True)
x_8 = tensor([1.2583], requires_grad=True)
x_9 = tensor([1.0066], requires_grad=True)
x_10 = tensor([0.8053], requires_grad=True)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3226683.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

如何用Vue3和Plotly.js创建交互式表格?

本文由ScriptEcho平台提供技术支持 项目地址:传送门 Plotly.js 动态生成 HTML 表格 应用场景介绍 在数据分析和可视化领域,经常需要以表格的形式展示数据。Plotly.js 是一款功能强大的 JavaScript 库,不仅可以创建交互式图表,…

漂亮的不像话的网站首屏,直接勾起了用户浏览欲望。

漂亮大气的网站首屏页面可以激发用户的浏览欲望,主要通过以下几个方面的设计和呈现来实现: 引人注目的视觉效果:使用高质量的图片、精心设计的图形和动画效果来吸引用户的眼球。这些视觉元素应当与网站的主题和品牌形象相符,并能够…

代码随想录(day3)有序数组的平方

暴力求解法: 心得:需要确定范围,比如nums.sort()是在for循环之外,根据函数的功能来确定 return返回的是nums,而不是nums[i]因为返回的是整个数组 class Solution(object):def sortedSquares(self, nums):for i in r…

生物素修饰稀土掺杂无机荧光纳米颗粒

一、基本概述 生物素,也被称为维生素H或辅酶R,是B族维生素的一种,主要参与代谢脂肪和蛋白质,维持人体的正常生长、发育和健康。稀土掺杂无机荧光纳米颗粒则因其良好的光学性能,如窄发射带、高稳定性、良好的生物相容性…

查看oracle ojdbc所支持的JDBC驱动版本

oracle jcbc驱动的下载地址参考:JDBC and UCP Downloads page 其实上文中对ojdbc所支持的JDBC驱动版本已经有说明了,不过,因为oracle的驱动包很多时间,都是在公司内部私服里上传维护的,上传的时候,可能又没…

快手矩阵源码揭秘:短视频运营新利器,一键管理多平台,轻松告别繁琐!

在数字化浪潮席卷全球的今天,短视频已成为人们生活中不可或缺的一部分。无论是抖音、快手还是其他短视频平台,都汇聚了数以亿计的用户,为内容创作者提供了广阔的舞台。然而,随着短视频平台的不断涌现,如何高效、便捷地…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十七章 Linux 环境变量

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

NSAT-8000电源检测软件测试砖式电源模块的方案及优势

砖式电源模块类型 砖式电源,顾名思义其外观尺寸像块砖,具有体积小、功率大、安装方便等特点。砖式电源模块具备高可靠性和高稳定性,能够为设备提供稳定的电力输出,在通信、工业、医疗等领域广泛应用。 根据尺寸大小,砖…

数据分析入门指南:表结构数据(三)

在数字化转型的浪潮中,表结构数据作为企业决策支持系统的核心要素,其重要性日益凸显。本文深入剖析了表结构数据的本质特征、高效处理策略,并探讨了其在现代商业智能环境中的广泛应用,旨在为数据分析师与决策者提供前沿洞察与实战…

菜花插画:成都亚恒丰创教育科技有限公司

菜花插画:田园诗意的视觉盛宴 在纷扰繁杂的都市生活中,人们往往渴望一抹清新与宁静,以慰藉心灵的疲惫。而菜花插画,恰似一股来自乡野的清风,以其独特的田园诗意,成都亚恒丰创教育科技有限公司为我们的视觉…

SpringSecurity中文文档(Servlet Method Security)

Method Security 除了在请求级别进行建模授权之外&#xff0c;Spring Security 还支持在方法级别进行建模。 您可以在应用程序中激活它&#xff0c;方法是使用EnableMethodSecurity 注释任何Configuration 类&#xff0c;或者将 < method-security > 添加到任何 XML 配…

2024年夏季德旺杯数学素养水平测试

此为小高组的测试&#xff0c;不过德旺杯主要看获奖情况&#xff0c;选择学员入营

2024互联网助力数字消费发展蓝皮书

来源&#xff1a;中国互联网络信息中心 近期历史回顾&#xff1a; 2024年5月全国二手房市场月报.pdf 2024跨境电商 2023年中国首席营销官&#xff08;CMO)调查报告.pdf 品牌信任维度.pdf 2024阿里妈妈经营指南VOL.10-“轻”感生活激发夏日生意新增长&#xff08;38页&#xff…

【漏洞复现】WordPress插件Recall CVE-2024-32709 SQL注入漏洞

0x01 产品简介 WordPress是一款免费开源的内容管理系统(CMS)&#xff0c;最初是一个博客平台&#xff0c;但后来发展成为一个功能强大的网站建设工具&#xff0c;适用于各种类型的网站&#xff0c;包括个人博客、企业网站、电子商务网站等&#xff0c;并逐步演化成一款内容管理…

【开源项目】H264码流格式解析

目录 1.概述2.头文件的定义2.1 基础头文件&#xff08;base.h&#xff09;2.2 H264码流读取文件&#xff08;bs.h&#xff09;2.2.1 单比特读取函数&#xff08;bs_read_u1&#xff09;2.2.2 指数哥伦布无符号编码&#xff08;bs_read_ue&#xff09;2.2.3 指数哥伦布有符号编码…

【独家揭秘】视频号矩阵系统源码,智能多平台管理,发布效率飙升的秘密武器!

在如今这个信息爆炸的时代&#xff0c;视频内容已经成为人们获取信息和娱乐的重要方式。然而&#xff0c;对于众多内容创作者和企业来说&#xff0c;如何高效地将视频内容发布到各大平台&#xff0c;提升品牌曝光度和用户互动&#xff0c;一直是一个头疼的问题。今天&#xff0…

获超九成Gartner用户力推!FortiGate连续五年斩获“客户之选”称号

近日&#xff0c;Gartner Peer Insights™ 网络防火墙客户之选报告发布&#xff0c;Fortinet 连续第五年荣登这项权威榜单。该评选结果源于广大用户对 Fortinet 防火墙产品的真实反馈&#xff0c;是客户选择 Fortinet 的重要参考依据&#xff0c;也是FortiGate能够占据全球防火…

springboot大学生竞赛管理系统-计算机毕业设计源码37276

摘 要 随着教育信息化的不断发展&#xff0c;大学生竞赛已成为高校教育的重要组成部分。传统的竞赛组织和管理方式存在着诸多问题&#xff0c;如信息不透明、效率低下、管理不便等。为了解决这些问题&#xff0c;提高竞赛组织和管理效率&#xff0c;本文设计并实现了一个基于Sp…

在目标检测数据集上微调Florence-2

Florence-2是由微软开源的轻量级视觉-语言模型,采用MIT许可。该模型在任务如图像描述、目标检测、定位和分割中展示了强大的零样本和微调能力。 图1。图示展示了每个任务所表达的空间层次和语义细粒度水平。来源:Florence-2:推进多种视觉任务的统一表示。 该模型将图…

【SVN的使用- SVN的基本命令-SVN命令简写-注意事项-解决冲突 Objective-C语言】

一、SVN的更新命令:update 1.服务器如果新建了一个文件夹,yuanxing,版本变成6了, 我现在本地还只有三个文件夹,版本5, 终端里边,我们敲一个svn update, 我这儿就多了一个yuanxing文件夹, 这个就是更新,就是把服务器最新的代码下载下来, 假设服务器上大家提交了这…