pytorch交叉熵损失函数计算,pytorch正则化损失函数

  pytorch交叉熵损失函数计算,pytorch正则化损失函数

  本文主要介绍PyTorch计算损失函数的Hessian矩阵对模型参数的详细说明。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。

  00-1010序模型定义求解Hessian矩阵

  

目录

  在实现Per-FedAvg的代码时,会遇到以下问题:

  可以发现,我们需要损失函数对模型参数的Hessian矩阵。

  

前言

  我们定义一个相对简单的模型:

  类ANN(nn。模块):

  def __init__(self):

  超级(安,自我)。__init__()

  self.sigmoid=nn。乙状结肠()

  self.fc1=nn。线性(3,4)

  self.fc2=nn。线性(4,5)

  定义转发(自身,数据):

  x=self.fc1(数据)

  x=self.fc2(x)

  返回x

  输出模型的参数:

  模型=ANN()

  对于model.parameters()中的参数:

  print(param.size())

  输出如下所示:

  火炬。大小([4,3])

  火炬。大小([4])

  火炬。大小([5,4])

  火炬。大小([5])

  

模型定义

  我们首先定义数据:

  data=torch.tensor([1,2,3],dtype=torch.float)

  label=torch.tensor([1,1,5,7,8],dtype=torch.float)

  pred=模型(数据)

  loss_fn=nn。MSELoss()

  loss=loss_fn(pred,label)

  然后解决第一步:

  grads=torch . autograded . grad(loss,model.parameters(),retain_graph=True,create_graph=True)

  输出梯度:

  (张量([[-1.0530,-2.1059,-3.1589),

  [ 2.3615, 4.7229, 7.0844],

  [-1.5046, -3.0093, -4.5139],

  [-2.0272,-4.0543,-6.0815]],grad_fn=TBackward0),张量([-1.0530,2.3615,-1.5046,-2.0272),grad_fn=SqueezeBackward1),张量([[ 0.2945,-0.2725,-0.8159,-0.6720),

  [ 0.1936, -0.1791, -0.5362, -0.4416],

  [ 1.0800, -0.9993, -2.9918, -2.4641],

  [ 1.3448, -1.2444, -3.7255, -3.0683],

  [ 1.2436,-1.1507,-3.4450,-2.8373]],grad_fn=TBackward0),张量([-0.6045,-0.3972,-2.2165,-2.7600,-2.5522),

  grad _ fn=mselossbackward backward 0))

  总共可以找到四个张量,分别是损失函数对四个参数张量的梯度(两层,各有权重和偏差)。

  然后,对于每个张量,求解第二步:

  hessian_params=[]

  对于范围内的k(长度(梯度)):

  Hess _ params=torch . zeros _ like(grads[k])

  对于范围内的I(grads[k])。大小(0)):

  #判断是W还是B

  if len(grads[k]。size())==2:

  # w

  对于范围内的j(grads[k])。尺寸(1)):

  hess_params[i,j]=torch . autograded . grad(grads[k][I][j],model.parameters(),retain_graph=True)[k][i,j]

  else:

  # b

  Hess _ params[I]=torch . autograded . grad(grads[k][I],model.parameters(),retain_graph=True)[k][i]

  hessian_params.append

  这里需要注意的是,模型由两层组成,每层都有一个权值和一个偏移量,其中权值参数是二维的,偏移量参数是一维的。所以在进行具体的二阶导数时,需要做出判断。

  最后的hessian_params是一个列表,它包含四个张量,对应于损失函数对两层网络的权重和偏差的二阶。

  以上是PyTorch计算损失函数对模型参数的Hessian矩阵示例的细节。关于PyTorch计算损失函数的Hessian矩阵的更多信息,请关注盛行IT软件开发工作室的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: