【问题标题】:How can I customize the loss function in Torch?如何在 Torch 中自定义损失函数?
【发布时间】:2017-03-07 06:26:53
【问题描述】:

我目前使用的是 Torch 7,我需要自定义损失函数,尤其是交叉熵误差函数。

我正在考虑向交叉熵误差函数添加一些参数,但我找不到应该修改哪个部分。

我查看了 CrossEntropyCriterion.lua 但仍然不知道方法,因为我在此文件中看不到任何方程式。

谁能告诉我方程式在哪里?或者我应该修改哪个文件?

【问题讨论】:

标签: torch


【解决方案1】:

要自定义损失函数,您必须更改方法 __initupdateOutputupdateGradInput

  • __init是类初始化函数
  • 当您在标准中使用:forward() 方法时,将调用updateOutput
  • updateGradInput 将在您使用 :backward() 时被调用,它是您标准的梯度

自定义标准的结构如下:

local yourCriterion, parent = torch.class('nn.yourCriterion', 'nn.Criterion')

function yourCriterion:__init(your_parameters):
  parent.__init(self)
  ... (you can add as many parameters as you want to your criterion
       and give them the name your prefer)
  self.parameters = your_parameters


function yourCriterion:updateOutput(input)
  ... (your criterion code here)
  return value_of_the_criterion

function yourCriterion:updateGradInput(input):
  ... (your criterion gradient code here)
  return gradient

[编辑]:你可以在这里找到交叉熵准则的代码https://github.com/torch/nn/blob/master/CrossEntropyCriterion.lua

【讨论】:

  • 对不起,我忘了把链接放到交叉熵标准。我已经编辑了我的答案以添加它。
猜你喜欢
  • 2016-09-27
  • 1970-01-01
  • 2021-03-22
  • 2018-11-24
  • 2021-09-21
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
  • 2020-12-19
相关资源
最近更新 更多