inception score的理解

Inception score

作用

评估GAN模型的指标,评价生成的图片集合的好坏

特点

  1. 单一样本的独特性:哪个样本属于哪一类的确定性很大(p(y|x)的某一个值很大其他值很小,即熵很小)

最小化

  1. 多样本间的差异性:结果有很多类 (p(y)的各个值相差不大,即熵很大)

最大化

综合起来就是

  • 展开



    因为实际当中,我们无法计算积分,就采用蒙特卡罗的方法,将积分计算换成求和:


实际计算中,我们一般把所有数据分成几份,我们对每一份数据进行上面的计算,然后计算这几份数据的平均值和方差。

代码

(官方)https://github.com/openai/improved-gan/blob/master/inception_score/model.py

def preds2score(preds,splits):  # 公式
    '''
    :param preds: 总数据
    :param splits: 数据被分成的份数
    :return: inception score
    '''
    scores = []
    for i in range(splits):
        part = preds[(i * preds.shape[0] // splits):((i + 1) * preds.shape[0] // splits), :]
        kl = part * (np.log(part) - np.log(np.expand_dims(np.mean(part, 0), 0)))
        kl = np.mean(np.sum(kl, 1))
        scores.append(np.exp(kl))
    return np.mean(scores), np.std(scores)

你可能感兴趣的:(inception score的理解)