def get_expectation(self, num_items, vars):
num_pairs = 0
distance_sum = 0.0
# If self distance computed expectation for top and bottom half
if self.use_self_distance:
for i in xrange(num_items):
# Split image to top and bottom half
var_half_1, var_half_2 = torch.chunk(vars[i], 2, dim=2)
distance_sum += self.as_np(self.distance(var_half_1, var_half_2))
return distance_sum / num_items
# Otherwise compute expectation for all pairs of images
for i in xrange(num_items - 1):
for j in xrange(i + 1, num_items):
num_pairs += 1
distance_sum += self.as_np(self.distance(vars[i], vars[j]))
return distance_sum / num_pairs
评论列表
文章目录