使用PyTorch根据我根据张量计算出的数字来调整张量矩阵值吗?

Fareed Mabrouk

我已经初始化了两个张量(矩阵):

sm=Var(torch.randn(20,1),requires_grad=True)
sm = torch.mm(sm,sm.t()) 
freq_m=Var(torch.randn(12,20),requires_grad=True)

我正在根据这两个矩阵中的数据创建两个列表,并且正在使用spearmanr获取这两个列表之间的相关值。我如何创建列表并不重要,但目标是调整矩阵内的值,以使计算出的相关值尽可能接近1。

如果要手动解决此问题,我将每次将矩阵中的值调整0.01(或一些小数字),然后重新计算列表和相关分数。如果新的相关值高于上一个,我将保存2个矩阵并调整一个不同的值,直到获得2个可以给我最高相关分数的矩阵。

PyTorch是否可以自动执行此操作?我知道PyTorch可以根据方程式进行调整,但是我想调整矩阵值的方式并不针对方程式,而是针对我计算的相关值。对此的任何指导将不胜感激!

统计院长

Pytorch有一个autograd包,这意味着如果您有变量,并且将它们传递给可微分的函数并获得标量结果,则可以执行梯度下降来更新变量以降低或增加标量结果。

因此,您需要定义一个在张量级别上起作用的函数f,以便f(sm,freq_m)将为您提供所需的相关性。

然后,您应该执行以下操作:

lr = 1e-3
for i in range(100):
  # 100 updates
  loss = 1 - f(sm, freq_m)
  print(loss)
  loss.backward()
  with torch.no_grad():
    sm -= lr * sm.grad
    freq_m -= lr * freq_m.grad
    # Manually zero the gradients after updating weights
    sm.grad.zero_()
    freq_m.grad.zero_()

建议您进行实验,学习速度基本上就是您要执行的步骤的大小,学习速度太高会导致损失爆炸,学习速度太少会导致收敛缓慢。

编辑:要回答的评论loss.backward:对任何微函数f,f是多张量的函数t1, ..., tnrequires_grad=True结果,可以计算出损失的梯度相对于每个那些张量。完成后loss.backward,它将计算这些梯度并将其存储在t1.grad,...,tn.grad中。然后t1, ..., tn使用梯度下降进行更新以降低f的值。此更新不需要计算图,因此这就是您使用的原因with torch.no_grad()在循环的最后,您将渐变归零,因为.backward它不会覆盖渐变,而是向其中添加新的渐变。有关更多信息,请访问:https : //discuss.pytorch.org/t/why-do-we-need-to-set-the-gradients-manually-to-zero-in-pytorch/4903

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据一列中唯一值的数量计算出的新变量

使用dplyr根据分组变量计算NA的值

使用张量计算错误值的梯度下降

使用稀疏张量计算梯度时的张量流给出nans

Tensorflow:针对高阶张量计算Hessian矩阵(仅对角线部分)

仅使用最高数字从向量计算得出的值创建自定义矩阵

使用javascript根据数量计算成本

计算出的 Numpy 中值未在 BarPlot 上表示,我如何根据其表示值

Julia中的数组/张量计算效率

使用不同形状的张量计算余弦距离

我可以使用字典来决定根据我称为 key 的变量的值采取哪些操作吗?

使用张量板时,如何总结在多个小批处理中计算出的损失?

根据条件更改张量流张量的值

我们是根据Nutiteq多边形投影面积计算出的面积吗?或实际表面积?

设计一种算法来根据变量计算获胜的可能性

如何创建根据ID / R中的行从组合计算出的共现矩阵?

kNN-如何根据计算出的距离在训练矩阵中找到最近的邻居

根据计算出的矩阵对3D表面进行动画处理

MySQL:可以根据收到的每个订单的数量计算总库存成本吗?

Pytorch 使用索引张量设置张量的值

与“ glmnet”一起使用的Ridge回归给出的系数与我根据“教科书定义”计算出的系数不同?

根据绿色相对于蓝色和红色的数量计算值

使用矩阵*(矩阵')的特征向量计算svd

根据LeafletJS中的给定数量计算半径

根据分组变量计算百分比

根据数量计算折扣价的简单逻辑

根据变量计算更改HTML段落

根据额外重量计算运费

根据子问题中“是”的数量计算问题分数