def kld(self, vec_true, vec_compare):
ind = vec_true.data * vec_compare.data > 0
ind_var = chainer.Variable(ind)
include_nan = vec_true * F.log(vec_true / vec_compare)
z = chainer.Variable(np.zeros((len(ind), 1), dtype=np.float32))
# return np.nansum(vec_true * np.log(vec_true / vec_compare))
return F.sum(F.where(ind_var, include_nan, z))
评论列表
文章目录