pytorch实现梯度下降算法例子

如题,利用pytorch,通过代码实现机器学习中的梯度下降算法,求解如下方程:
f ′ ( x , y ) = x 2 + 20 y 2 {f}'(x,y) = x^2 + 20 y^2 f(x,y)=x2+20y2
的最小值。

Latex语法参考:https://blog.csdn.net/ViatorSun/article/details/82826664


import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import math
from mpl_toolkits.mplot3d import Axes3D
import warnings
import decimal# 原函数
def Z(x,y):return x**2 + 20*(y**2)# x方向上的梯度
def dx(x):return 2*x# y方向上的梯度
def dy(y):return 40*y# 初始值
X = x_0 = np.float64(3000.0)
Y = y_0 = np.float64(300.0)# 学习率
alpha = 0.01# 保存梯度下降所经过的点
globalX = [x_0]
globalY = [y_0]
globalZ = [Z(x_0,y_0)]cnt = 0# 迭代30while True:lastZ = Z(X,Y)temX = X - alpha * dx(X)temY = Y - alpha * dy(Y)temZ = Z(temX, temY)if(lastZ - temZ <= 0.00001):break;if(cnt >= 1000000):break;# X,Y 重新赋值X = temXY = temY# 将新值存储起来globalX.append(temX)globalY.append(temY)globalZ.append(temZ)cnt = cnt +1plt.figure(figsize=(8,3))
plt.subplot(111)plt.ylabel('Y')
plt.xlabel('X')plt.plot(globalZ)
plt.show()
# 打印结果
print(u"最终结果为:(x,y,z)=(%.5f, %.5f, %.5f),迭代次数:%d" % (X, Y, Z(X,Y),cnt))
print(u"迭代过程中取值")
num = len(globalX)
for i in range(num):print(u"第%d次迭代:%.5f, y%d=%.5f, z%d=%.5f" % (i,globalX[i],i,globalY[i],i,globalZ[i]))

输出结果:

在这里插入图片描述
最终结果为:(x,y,z)=(397.85867, 0.00000, 158291.51945),迭代次数:100
迭代过程中取值
第0次迭代:3000.00000, y0=300.00000, z0=10800000.00000
第1次迭代:2940.00000, y1=180.00000, z1=9291600.00000
第2次迭代:2881.20000, y2=108.00000, z2=8534593.44000
第3次迭代:2823.57600, y3=64.80000, z3=8056562.22778
第4次迭代:2767.10448, y4=38.88000, z4=7687100.29124
第5次迭代:2711.76239, y5=23.32800, z5=7364539.17367
第6次迭代:2657.52714, y6=13.99680, z6=7066368.72182
第7次迭代:2604.37660, y7=8.39808, z7=6784188.02823
第8次迭代:2552.28907, y8=5.03885, z8=6514687.28512
第9次迭代:2501.24329, y9=3.02331, z9=6256400.78564
第10次迭代:2451.21842, y10=1.81399, z10=6008537.55665
第11次迭代:2402.19405, y11=1.08839, z11=5770559.95657
第12次迭代:2354.15017, y12=0.65303, z12=5542031.55767
第13次迭代:2307.06717, y13=0.39182, z13=5322561.98712
第14次迭代:2260.92582, y14=0.23509, z14=5111786.68892
第15次迭代:2215.70731, y15=0.14106, z15=4909359.27237
第16次迭代:2171.39316, y16=0.08463, z16=4714948.40627
第17次迭代:2127.96530, y17=0.05078, z17=4528236.36337
第18次迭代:2085.40599, y18=0.03047, z18=4348918.17242
第19次迭代:2043.69787, y19=0.01828, z19=4176701.00164
第20次迭代:2002.82392, y20=0.01097, z20=4011303.63796
第21次迭代:1962.76744, y21=0.00658, z21=3852456.01246
第22次迭代:1923.51209, y22=0.00395, z22=3699898.75384
第23次迭代:1885.04185, y23=0.00237, z23=3553382.76300
第24次迭代:1847.34101, y24=0.00142, z24=3412668.80552
第25次迭代:1810.39419, y25=0.00085, z25=3277527.12080
第26次迭代:1774.18631, y26=0.00051, z26=3147737.04681
第27次迭代:1738.70258, y27=0.00031, z27=3023086.65975
第28次迭代:1703.92853, y28=0.00018, z28=2903372.42802
第29次迭代:1669.84996, y29=0.00011, z29=2788398.87987
第30次迭代:1636.45296, y30=0.00007, z30=2677978.28423
第31次迭代:1603.72390, y31=0.00004, z31=2571930.34417
第32次迭代:1571.64942, y32=0.00002, z32=2470081.90254
第33次迭代:1540.21643, y33=0.00001, z33=2372266.65920
第34次迭代:1509.41210, y34=0.00001, z34=2278324.89950
第35次迭代:1479.22386, y35=0.00001, z35=2188103.23348
第36次迭代:1449.63938, y36=0.00000, z36=2101454.34543
第37次迭代:1420.64660, y37=0.00000, z37=2018236.75335
第38次迭代:1392.23366, y38=0.00000, z38=1938314.57792
第39次迭代:1364.38899, y39=0.00000, z39=1861557.32064
第40次迭代:1337.10121, y40=0.00000, z40=1787839.65074
第41次迭代:1310.35919, y41=0.00000, z41=1717041.20057
第42次迭代:1284.15200, y42=0.00000, z42=1649046.36903
第43次迭代:1258.46896, y43=0.00000, z43=1583744.13281
第44次迭代:1233.29958, y44=0.00000, z44=1521027.86515
第45次迭代:1208.63359, y45=0.00000, z45=1460795.16169
第46次迭代:1184.46092, y46=0.00000, z46=1402947.67329
第47次迭代:1160.77170, y47=0.00000, z47=1347390.94543
第48次迭代:1137.55627, y48=0.00000, z48=1294034.26399
第49次迭代:1114.80514, y49=0.00000, z49=1242790.50714
第50次迭代:1092.50904, y50=0.00000, z50=1193576.00305
第51次迭代:1070.65886, y51=0.00000, z51=1146310.39333
第52次迭代:1049.24568, y52=0.00000, z52=1100916.50176
第53次迭代:1028.26077, y53=0.00000, z53=1057320.20829
第54次迭代:1007.69555, y54=0.00000, z54=1015450.32804
第55次迭代:987.54164, y55=0.00000, z55=975238.49505
第56次迭代:967.79081, y56=0.00000, z56=936619.05064
第57次迭代:948.43499, y57=0.00000, z57=899528.93624
第58次迭代:929.46629, y58=0.00000, z58=863907.59036
第59次迭代:910.87697, y59=0.00000, z59=829696.84979
第60次迭代:892.65943, y60=0.00000, z60=796840.85453
第61次迭代:874.80624, y61=0.00000, z61=765285.95669
第62次迭代:857.31011, y62=0.00000, z62=734980.63281
第63次迭代:840.16391, y63=0.00000, z63=705875.39975
第64次迭代:823.36063, y64=0.00000, z64=677922.73392
第65次迭代:806.89342, y65=0.00000, z65=651076.99366
第66次迭代:790.75555, y66=0.00000, z66=625294.34471
第67次迭代:774.94044, y67=0.00000, z67=600532.68866
第68次迭代:759.44163, y68=0.00000, z68=576751.59419
第69次迭代:744.25280, y69=0.00000, z69=553912.23106
第70次迭代:729.36774, y70=0.00000, z70=531977.30671
第71次迭代:714.78039, y71=0.00000, z71=510911.00536
第72次迭代:700.48478, y72=0.00000, z72=490678.92955
第73次迭代:686.47509, y73=0.00000, z73=471248.04394
第74次迭代:672.74558, y74=0.00000, z74=452586.62140
第75次迭代:659.29067, y75=0.00000, z75=434664.19119
第76次迭代:646.10486, y76=0.00000, z76=417451.48922
第77次迭代:633.18276, y77=0.00000, z77=400920.41025
第78次迭代:620.51911, y78=0.00000, z78=385043.96200
第79次迭代:608.10872, y79=0.00000, z79=369796.22111
第80次迭代:595.94655, y80=0.00000, z80=355152.29075
第81次迭代:584.02762, y81=0.00000, z81=341088.26004
第82次迭代:572.34707, y82=0.00000, z82=327581.16494
第83次迭代:560.90013, y83=0.00000, z83=314608.95081
第84次迭代:549.68212, y84=0.00000, z84=302150.43636
第85次迭代:538.68848, y85=0.00000, z85=290185.27908
第86次迭代:527.91471, y86=0.00000, z86=278693.94202
第87次迭代:517.35642, y87=0.00000, z87=267657.66192
第88次迭代:507.00929, y88=0.00000, z88=257058.41851
第89次迭代:496.86910, y89=0.00000, z89=246878.90514
第90次迭代:486.93172, y90=0.00000, z90=237102.50049
第91次迭代:477.19309, y91=0.00000, z91=227713.24147
第92次迭代:467.64922, y92=0.00000, z92=218695.79711
第93次迭代:458.29624, y93=0.00000, z93=210035.44354
第94次迭代:449.13032, y94=0.00000, z94=201718.03998
第95次迭代:440.14771, y95=0.00000, z95=193730.00560
第96次迭代:431.34475, y96=0.00000, z96=186058.29738
第97次迭代:422.71786, y97=0.00000, z97=178690.38880
第98次迭代:414.26350, y98=0.00000, z98=171614.24940
第99次迭代:405.97823, y99=0.00000, z99=164818.32513
第100次迭代:397.85867, y100=0.00000, z100=158291.51945

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ 集群部署

RabbiMQ 是用 Erlang 开发的,集群非常方便,因为 Erlang 天生就是一门分布式语言,但其本身并不支持负载均衡。 RabbitMQ 的集群节点包括内存节点、磁盘节点。RabbitMQ 支持消息的持久化,也就是数据写在磁盘上,最合适的方案就是既有内存节点,又有磁盘节点。 RabbitMQ 模式大…

【动态规划part12】| 309.买卖股票的最佳时机含冷冻期、714.买卖股票的最佳时机含手续费

目录 &#x1f388;LeetCode309.最佳买卖股票时机含冷冻期 &#x1f388;LeetCode714.买卖股票的最佳时机含手续费 &#x1f388;LeetCode309.最佳买卖股票时机含冷冻期 给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计…

Jenkins从配置到实战(二) - Jenkins的Master-Slave分布式构建

前言 Jenkins的Master-Slave分布式构建&#xff0c;就是通过将构建过程分配到从属Slave节点上&#xff0c;从而减轻Master节点的压力&#xff0c;而且可以同时构建多个&#xff0c;有点类似负载均衡的概念。简单理解就是&#xff0c;将Jenkins服务器上的构建任务分配到其他机器…

【Spring Boot】实战:实现优雅的数据返回

实战&#xff1a;实现优雅的数据返回 本节介绍如何让前后台优雅地进行数据交互&#xff0c;正常的数据如何统一数据格式&#xff0c;以及异常情况如何统一处理并返回统一格式的数据。 1.为什么要统一返回值 在项目开发过程中经常会涉及服务端、客户端接口数据传输或前后台分…

多分类问题-Softmax Classifier分类器

概率分布&#xff1a;属于每一个类别的概率总和为0&#xff0c;且都>0&#xff0c;n组类别需要n-1个参数就能算出结果 数据预处理 loss函数 crossentropyloss()函数 CrossEntropyLoss <> LogSoftmax NLLLoss。也就是说使用CrossEntropyLoss最后一层(线性层)是不需要做…

Fiddler Everywhere(TTP调试抓包工具) for Mac苹果电脑版

Fiddler Everywhere for Mac版是Mac电脑上的一款跨平台的HTTP调试抓包工具&#xff0c;Fiddler Everywhere for Mac能够记录客户端与服务器之间的所有HTTP&#xff08;S&#xff09;通信&#xff0c;支持对包进行监视、分析、设置断点、甚至修改请求/响应数据等操作。 适用于任…

基于量子同态加密的安全多方凸包协议

摘要安全多方计算几何(SMCG)是安全多方计算的一个分支。该协议是为SMCG中安全的多方凸包计算而设计的。首先&#xff0c;提出了一种基于量子同态加密的安全双方值比较协议。由于量子同态加密的性质&#xff0c;该协议可以很好地保护量子电路执行过程中数据的安全性和各方之间的…

【广州华锐互动】AR智慧机房设备巡检系统

AR智慧机房设备巡检系统是一种新型的机房巡检方式&#xff0c;它通过使用增强现实技术将机房设备、环境等信息实时呈现在用户面前&#xff0c;让巡检人员可以更加高效地完成巡检任务。 首先&#xff0c;AR智慧机房设备巡检系统具有极高的智能化程度。该系统可以根据用户设定的…

WIZnet W5500-EVB-Pico树莓派入门教程(一)

概述 W5500-EVB-Pico是基于树莓派RP2040和完全硬连线TCP/IP控制器W5500的微控制器开发板-基本上与树莓派Pico板相同&#xff0c;但通过W5500芯片增加了以太网功能。 板载资源 RP2040是Raspberry Pi的首款微控制器。它将我们的高性能、低成本和易用性的标志性价值观带入微控制器…

抖音短视频seo源码矩阵系统开发

一、前言&#xff1a; 抖音SEO源码矩阵系统开发是一项专为抖音平台设计的SEO优化系统&#xff0c;能够帮助用户提升抖音视频的搜索排名和曝光度。为了确保系统运行正常&#xff0c;需要安装FFmpeg和FFprobe工具。FFmpeg是一个用于处理多媒体数据的开源工具集&#xff0c;而FFpr…

Redis三种模式——主从复制,哨兵模式,集群

目录 一、主从复制 1.1主从复制的概念 1.2Redis主从复制作用 1.2.1数据冗余 1.2.2故障恢复 1.2.3负载均衡 1.2.4高可用基石 1.3Redis主从复制流程 1.4部署Redis 主从复制 1.4.1.环境部署 1.4.2.所有服务器都先关闭防火墙 1.4.3.所有服务器都安装Redis 1.4.4修改Master主节点R…

在CSDN学Golang云原生(Kubernetes声明式资源管理Kustomize)

一&#xff0c;生成资源 在 Kubernetes 中&#xff0c;我们可以通过 YAML 或 JSON 文件来定义和创建各种资源对象&#xff0c;例如 Pod、Service、Deployment 等。下面是一个简单的 YAML 文件示例&#xff0c;用于创建一个 Nginx Pod&#xff1a; apiVersion: v1 kind: Pod m…

Linux下CMake开发

CMake编译和运行C文件 编写CMakeLists.txt # 声明要求的 cmake 最低版本 cmake_minimum_required( VERSION 3.1 )# 声明一个 cmake 工程 project( pro )# 设置编译模式 set( CMAKE_BUILD_TYPE "Release" )#添加OPENCV库 #指定OpenCV版本&#xff0c;代码如下 #find…

jmeter-断言

断言作用&#xff1a;让脚本自动化执行过程中&#xff0c;能够自动判定执行结果是否正确&#xff0c;需要添加断言 响应断言 添加方式&#xff1a;测试计划–》线程组–》HTTP请求–》(右键添加)断言–》响应断言 案例 请求:https://www.baidu.com 检查&#xff1a;让程序检查…

TortoiseGit安装

1、TortoiseGit简介 TortoiseGit是基于TortoiseSVN的Git版本的Windows Shell界面。它是开源的&#xff0c;可以完全免费使用。 TortoiseGit 支持你执行常规任务&#xff0c;例如commit、显示日志、区分两个版本、创建分支和标签、创建补丁等。 2、TortoiseGit下载 (1)Tortois…

亚马逊云科技联合霞光社发布《2013~2023中国企业全球化发展报告》

中国企业正处于全球聚光灯下。当企业全球化成为时代发展下的必然趋势&#xff0c;出海也从“可选项”变为“必选项”。中国急速扩大的经济规模&#xff0c;不断升级的研发和制造能力&#xff0c;都在推动中国企业不断拓宽在全球各行业的疆域。 过去十年&#xff0c;是中国企业…

怎么在线制作证件?教你一键生成证件照

无论是申请身份证、护照、驾照还是学生证&#xff0c;都需要一张清晰、规范的证件照。但是&#xff0c;为了拍摄一张完美的证件照&#xff0c;需要付出不少时间和精力。而现在&#xff0c;我们可以使用压缩图网站提供的证件照制作工具&#xff0c;轻松制作出一张清晰、规范的证…

神经网络的初始化方法

文章目录 1、随机初始化2、Xavier初始化3、He初始化4、权重预训练初始化5、零初始化 对于神经网络的训练过程中&#xff0c;合适的参数初始化方法有助于更好的处理梯度消失和梯度爆炸问题。通常有以下几种初始化方法&#xff1a; 1、随机初始化 随机初始化&#xff08;Random…

飞行动力学-第15节-part2-松杆中性点 之 基础点摘要

飞行动力学-第15节-part2-松杆中性点 之 基础点摘要 1. 松杆中性点2. 松浮角2. 杆力梯度3. 参考资料 1. 松杆中性点 stick fixed&#xff1a; N 0 N_0 N0​&#xff0c;握杆&#xff0c;升降舵固定stick free&#xff1a; N 0 ′ N_0 N0′​&#xff0c;松杆&#xff0c;升降舵…

java static修饰的静态成员

静态成员 特点&#xff1a; 1.静态成员可以被本类所有对象共享2.静态成员可以通过类名调用也可以推荐对象调用&#xff0c;但是推荐使用类名调用&#xff01;3.静态成员随着类的加载而加载&#xff0c;优先于对象存在的静态方法的注意事项&#xff1a; 1.非静态方法可以访问任…