def forward(self, inputs):
xp = cuda.get_array_module(*inputs)
x0, x1 = inputs
self.diff = self.inside_weights * (x0 - x1)
abs_diff = xp.abs(self.diff)
flag = abs_diff < 1.0 / self.sigma2
y = (flag * 0.5 * xp.square(self.diff) * self.sigma2 +
(~flag) * (abs_diff - 0.5 / self.sigma2))
if xp == cuda.cupy:
with cuda.Device(cuda.get_device(y)):
num = xp.prod(xp.asarray(y.shape))
else:
num = xp.prod(y.shape)
return xp.array(y.sum() / num).astype(numpy.float32),
评论列表
文章目录