Torch,如何在批量优化期间获取损失值的张量

我正在使用批量优化在训练集上进行网络训练,并且我想获取包含每个训练示例损失的损失向量。

更具体地说,我正在使用大小为3x64x64的图像,并将其大小为64的批次。 因此,我的输入是大小为64x3x64x64的张量。

在训练期间,当我编写

output = net:forward(input)
loss = criterion:forward(input,target)

loss是一个数字,但我想获得一个张量(大小为64),其中包含每个图像批次中的一项,对应于该精确图像的损失值。

有没有一种方法可以做到这一点,而不需要在输入张量的第一个维度上进行循环?

点赞
用户7877814
用户7877814

forward 方法调用另一个方法,即 updateOutput 方法,它可以被覆盖。例如,在 MSECriterion() 的情况下,您可以通过注释对 THNN 库的调用并编写自己想要的标准来更改此方法。也就是,对所有的元素进行常规逐元素减法,然后平方(再次逐元素)并除以总数据点数量(再次逐元素); 然后将输出作为张量返回。

一旦更改了此内容,您还需要使用 luarocks make rocks/[文件夹中的 scm 文件] 重新编译 nn package,然后导航到 nn 文件夹。

2017-04-17 20:12:18