草庐IT

最速下降法—python实现

1.基本原理最速下降法就是从一个初始点开始,逐步沿着以当前点为基准,函数值变化最快的方向走,一直走到最优解为止。那么接下来就要考虑两个问题:(1)沿着什么方向走;(2)应该走多远;我们知道,沿着函数中某点方向导数最大的方向走下降是最快的,那么我们就得去找平行于该点梯度的方向,沿着这个方向(当为max问题)或者沿着这个方向的反方向(当为min问题)去更新当前位置。再考虑走多远呢?这时我们就要沿着梯度的方向不断迭代,直到找到收敛的迭代点为止,这个点也就是我们要求的最优解。2.python代码实现下面来使用最速下降法求函数的最小值,其中初始点为(0,0)。下面给出两种实现代码:importmathf

使用grad_cam生成自己的模型的热力图

importosimportnumpyasnpimporttorchfromPILimportImageimportmatplotlib.pyplotaspltfromtorchvisionimportmodelsfromtorchvisionimporttransformsfromutilsimportGradCAM,show_cam_on_image,center_crop_imgfromresnet1importMymodeldefmain():model=Mymodel(num_classes=7)#导入自己的模型,num_classes数为自己数据集的类别数weights_dict=

Pytorch autograd.grad与autograd.backward详解

Pytorchautograd.grad与autograd.backward详解引言平时在写Pytorch训练脚本时,都是下面这种无脑按步骤走:outputs=model(inputs) #模型前向推理optimizer.zero_grad() #清除累积梯度loss.backward() #模型反向求导optimizer.step() #模型参数更新对用户屏蔽底层自动微分的细节,使得用户能够根据简单的几个API将模型训练起来。这对于初学者当然是极好的,也是Pytorch这几年一跃成为最流行的深度学习框架的主要原因:易用性。但是,我们有时需要深究自动微分的机制,比如元学习方法MA

需要_grad与叶节点的关系

来自文档:需要_grad-布尔值指示该变量是否是由包含任何变量的子图创建的,需要它。只能在叶变量上更改叶子节点在这里是什么意思?叶节点只有输入节点吗?如果只能在叶节点上更改,那么我该如何冷冻层?看答案图的叶节点是那些节点(即Variables)未直接从图中的其他节点计算出来。例如:importtorchfromtorch.autogradimportVariableA=Variable(torch.randn(10,10))#thisisaleafnodeB=2*A#thisisnotaleafnodew=Variable(torch.randn(10,10))#thisisaleafnode

关于Pytorch中的train()和eval()(以及no_grad())

1、三剑客:train()、eval()、no_grad()1.1train()1.2eval()1.3no_grad()2、简单分析下2.1为什么要使用train()和eval()2.2为什么可以把训练集的统计量用作测试集?3、我的坑起源是我训练好了一个模型,新建一个推理脚本加载好checkpoint和预处理输入后推理,发现无论输入是哪一类甚至是随机数,其输出概率总是第一类的值最大,且总是在0.5附近,排查许久,发现是没有加上model.eval()函数。因为我使用了model.no_grad(),下意识认为不需要加model.eval(),导致发生了本次事故1、三剑客:train()、ev

optimizer.zero_grad(), loss.backward(), optimizer.step()的理解及使用

optimizer.zero_grad,loss.backward,optimizer.step用法介绍optimizer.zero_grad():loss.backward():optimizer.step():用法介绍这三个函数的作用是将梯度归零(optimizer.zero_grad()),然后反向传播计算得到每个参数的梯度值(loss.backward()),最后通过梯度下降执行一步参数更新(optimizer.step())。简单的说就是进来一个batch的数据,先将梯度归零,计算一次梯度,更新一次网络。model=MyModel()criterion=nn.CrossEntropy

AttributeError: partially initialized module ‘torch‘ has no attribute ‘no_grad‘ (most likely due to

(py38)root@autodl-container-f87d1190ac-c4b4f816:~/autodl-tmp/work1.1#pythonPython3.8.16(default,Mar22023,03:21:46)[GCC11.2.0]::Anaconda,Inc.onlinuxType"help","copyright","credits"or"license"formoreinformation.>>>importtorchTraceback(mostrecentcalllast):File"/root/miniconda3/envs/py38/lib/python3.8/s

MongoDB 查询子文档数组

在发布这个问题之前,我已经进行了彻底的研究,但找不到准确的解决方案。我有以下结构stname:"SC",dob:"1985",education{[{name:Lancaster,year:2013},{name:Manchester,year:2001,grad:2004},{name:Gambia,year:2001,grad:2011}]}所以我只想返回具有毕业字段的文档。所以应该返回最后两个文件。我尝试了以下查询但无济于事db.applicants.find({"education":{$elemMatch:{"grad":{$exists:true}}}},{"name":1

分类任务使用Pytorch实现Grad-CAM绘制热力图

对于深度学习网络,在我们指定数据集类别的情况下,Grad-CAM能够绘制出相应的热力图,让我们能够非常直观的看出网络关注的主要区域与特征是什么。本文主要记录在绘制热力图过程中,自己碰到的一些实际问题,希望能对小伙伴们有所帮助。以下是本文的参考视频和代码链接,我主要看的是B站霹雳吧啦老师的视频和代码(感谢我导)视频链接:使用Pytorch实现Grad-CAM并绘制热力图_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1e3411j7x7/?spm_id_from=333.788.recommend_more_video.0&vd_source=e43

[ 可视化 ] 经典网络模型 —— Grad-CAM 详解与复现

🤵Author:HorizonMax✨编程技巧篇:各种操作小结🎇机器视觉篇:会变魔术OpenCV💥深度学习篇:简单入门PyTorch🏆神经网络篇:经典网络模型💻算法篇:再忙也别忘了LeetCode[可视化]经典网络模型——Grad-CAM详解与复现🚀Grad-CAM🚀Grad-CAM详解🎨论文贡献🎨原理介绍🚩Grad-CAM可视化流程🚩Grad-CAM计算🚩GuidedGrad-CAM🎨实例展示🚩评估Grad-CAM定位能力🚩Grad-CAM图像分类🚩Grad-CAM视觉解释和文本解释🚩Grad-CAM图像描述🚩Grad-CAM视觉问答🚩Grad-CAM🚀Grad-CAM复现🚀Grad-CAM