gradient-descent相关内容

PyTorch:从坐标张量到网格张量的可微运算

我有一个张量,看起来像 coords = torch.Tensor([[0, 0, 1, 2], [0, 2, 2, 2]]) 第一行是网格上对象的x坐标,第二行是相应的y坐标。 我需要一种可微的方式(即渐变可以流动)来从该张量转到相应的网格张量,其中1表示该位置(行索引、列索引)中存在对象,而0表示没有对象: grid = to ..
发布时间:2022-04-12 11:22:14 其他开发

切换GPU设备会影响PyTorch反向传播中的梯度吗?

我用火炬。在计算中,我将一些数据和运算符A移到了GPU中。在中间步骤中,我将数据和运算符B移到CPU并继续前进。 我的问题是: 我的运算符B非常耗费内存,无法在GPU中使用。这是否会影响反向传播(某些部分在GPU中计算,其他部分在CPU中计算)? 推荐答案 Pytorch跟踪张量的位置。如果您使用.cpu()或.to('cpu')pytorch的本机命令,则应该没有问题。 ..
发布时间:2022-04-08 14:40:45 其他开发

在要素缩放、线性回归之后重新缩放

似乎是一个基本问题,但我需要在使用梯度下降的线性回归实现中使用特征缩放(取每个特征值,减去平均值,然后除以标准差)。在我完成之后,我想要将权重和回归线重新缩放到原始数据。我只用了一个功能,外加y-截取术语。使用缩放数据获取权重后,如何更改权重,使其应用于原始的未缩放数据? 推荐答案 假设您的回归是y = W*x + b与x缩放数据,与原始数据为 y = W/std * x0 + ..

反向传播和渐变下降使用相同的逻辑吗?

CNN使用反向传播来更新随机分配的权重、偏差和过滤器。对于值的更新,我们从头到尾使用链式规则找出梯度,并使用公式 New Value = old value - (learning Rate * gradient) 梯度下降是一个优化器,用于优化损失函数。这里还计算了梯度,公式为 New value = old value - (learning Rate * gradient) ..

autograd.grad和autograd之间的区别。向后?

假设我有我的客户损失函数,并且我想借助我的神经网络来拟合某个微分方程的解。因此,在每一次正向传递中,我都在计算我的神经网络的输出,然后通过将MSE与我想要与感知器匹配的预期方程相乘来计算损失。 现在我的疑问是:我应该使用grad(loss)还是应该使用loss.backward()进行反向传播来计算和更新渐变? 我知道在使用loss.backward()时,我必须用变量包装张量,并且必 ..
发布时间:2022-02-23 10:09:05 其他开发

三重损失反向传播梯度公式是什么?

我正在尝试使用 caffe 来实现 Schroff、Kalenchenko 和 Philbin "FaceNet: A Unified Embedding for人脸识别与聚类",2015. 我是新手,如何计算反向传播中的梯度? 解决方案 我假设你将损失层定义为 层{名称:“三元组损失"类型:“TripletLoss"底部:“锚"底部:“积极"底部:“负面"...} 现在您需要计 ..

区分梯度

有没有办法在 PyTorch 中区分梯度? 例如,我可以在 TensorFlow 中执行此操作: from pylab import *将张量流导入为 tftf.reset_default_graph()sess = tf.InteractiveSession()def gradient_descent( loss_fnc, w, max_its, lr):'''梯度下降“RNN"'''对 ..
发布时间:2022-01-06 20:00:25 Python

pytorch 如何设置 .requires_grad False

我想将我的一些模型设置为冻结状态.按照官方文档: with torch.no_grad():线性 = nn.Linear(1, 1)线性评估()打印(linear.weight.requires_grad) 但它打印 True 而不是 False.如果我想将模型设置为 eval 模式,我该怎么做? 解决方案 requires_grad=False 如果您想冻结部分模型并训练其余部 ..
发布时间:2022-01-06 19:32:46 Python

Caffe:如果两层反向传播梯度到同一个底部 blob 会发生什么?

我想知道如果我有一个生成底部 blob 的层,该层会被两个后续层进一步消耗,这两个层都会在反向传播阶段生成一些梯度来填充 bottom.diff.两个梯度会加起来形成最终的梯度吗?或者,只有其中一个可以存活?在我的理解中,Caffe 层需要在用一些计算的梯度填充之前将 bottom.diff 设置为全零,对吗?memset 会清除其他层已经计算的梯度吗?谢谢! 解决方案 使用多个损失层并不 ..

随机梯度下降的批量大小是训练数据的长度而不是 1?

我试图在使用批量梯度下降、随机梯度下降和小批量随机梯度下降时绘制不同的学习结果. 无论我在哪里,我都读到 batch_size=1 与普通 SGD 相同,batch_size=len(train_data) 与 Batch 梯度下降相同. 我知道随机梯度下降是指每次更新只使用一个数据样本,批量梯度下降使用整个训练数据集来计算目标函数/更新的梯度. 然而,当使用 keras 实现 ..

softmax 版本的triplet loss 的梯度计算

我一直在尝试在 中描述的Caffe中实现三元组损失的softmax版本Hoffer 和 Ailon,使用三元组网络的深度度量学习,ICLR 2015. 我已经尝试过这个,但我发现很难计算梯度,因为指数中的 L2 不是平方. 有人可以帮我吗? 解决方案 使用现有的 caffe 层实现 L2 规范可以为您省去所有麻烦. 这是在 caffe 中为“bottom"s x1 和 ..

梯度函数在反向传播中是如何工作的?

在反向传播中,是使用梯度 w.r.t. 计算的 Loss w.r.t 层 L 的梯度.L-1层?或者,是 Loss w.r.t. 的梯度.层 L-1 使用梯度 w.r.t 层 L? 解决方案 在反向传播中使用梯度下降函数来寻找调整权重的最佳值.有两种常见的梯度下降类型:Gradient Descent 和 Stochastic Gradient Descent. 梯度下降是确定改变权 ..
发布时间:2021-12-27 17:08:50 其他开发

了解 PyTorch 中的累积梯度

我试图理解 PyTorch 中梯度累积的内部工作原理.我的问题与这两个有些相关: 为什么我们需要调用 zero_grad() 在 PyTorch 中? 我们为什么要需要显式调用 zero_grad()? 对第二个问题的已接受答案的评论表明,如果小批量太大而无法在单个前向传递中执行梯度更新,因此必须将其拆分为多个子批次,则可以使用累积梯度. > 考虑以下玩具示例: 将 num ..
发布时间:2021-12-27 16:59:54 Python

为什么我们需要显式调用 zero_grad()?

为什么我们需要在 PyTorch 中明确地将梯度归零?为什么在调用 loss.backward() 时不能将梯度归零?通过将梯度保留在图形上并要求用户将梯度显式归零,可以在什么情况下使用? 解决方案 我们明确需要调用 zero_grad() 因为,在 loss.backward() 之后(当渐变计算),我们需要使用 optimizer.step() 进行梯度下降.更具体地说,梯度不会自动归 ..

三重态损失反向传播梯度公式是什么?

我正在尝试使用 caffe 来实现 Schroff、Kalenichenko 和 Philbin “FaceNet: A Unified Embedding for人脸识别与聚类",2015. 我是新手,那么如何计算反向传播中的梯度? 解决方案 我假设你将损失层定义为 层{名称:“tripletLoss"类型:“TripletLoss"底部:“锚"底部:“积极"底部:“负面"... ..

为什么我们需要在 PyTorch 中调用 zero_grad()?

zero_grad() 方法需要在训练过程中调用.但是文档并不是很有帮助> |zero_grad(自我)|将所有模型参数的梯度设置为零. 为什么需要调用这个方法? 解决方案 在 PyTorch,对于训练阶段的每个小批量,我们通常希望在开始进行反向传播之前明确地将梯度设置为零(即更新Wstrong>8 和 biases),因为 PyTorch 在随后的反向传递中累积梯度.在训练 RNN ..
发布时间:2021-12-27 16:48:48 Python

Sklearn SGDClassifier 部分拟合

我正在尝试使用 SGD 对大型数据集进行分类.由于数据太大而无法放入内存,我想使用 partial_fit 方法来训练分类器.我选择了一个适合内存的数据集样本(100,000 行)来测试 fit 与 partial_fit: from sklearn.linear_model import SGDClassifier定义批次(l,n):对于 xrange(0, len(l), n) 中的 i:产 ..

Keras 中的自定义损失函数以惩罚误报

我正在研究一个医疗数据集,我试图尽可能减少假阴性.“实际上没有疾病时有疾病"的预测对我来说是可以的,但“实际上有疾病时没有疾病"的预测则不然.也就是说,我对 FP 没问题,但对 FN 没问题. 经过一番研究,我发现了一些方法,比如保持一个班级的更高学习率、使用班级权重、具有特异性/敏感性的集成学习代码>等 我使用诸如 class_weight = {0 : 0.3,1: 0.7} 之类 ..