Внедрение Python T-SNE от Laurens van der Maaten - PullRequest
0 голосов
/ 24 октября 2018

Я читаю исходный код Python-реализации T-SNE.(https://lvdmaaten.github.io/tsne/code/tsne_python.zip)

Я запутался в реализации функции Hbeta. При вычислении энтропии автор использует следующую строку кода.

H = np.log(sumP) + beta * np.sum(D * P) / sumP

Я не смог найтисоответствующая формула в диссертации. Вместо этого формула, вычисляющая энтропию:

enter image description here

Похоже, что вычисление H и формула не совпадают.

Может кто-нибудь объяснить мне, что я пропустил?

def Hbeta(D=np.array([]), beta=1.0):
    """
       Compute the perplexity and the P-row for a specific value of the
       precision of a Gaussian distribution.
    """

    # Compute P-row and corresponding perplexity
    P = np.exp(-D.copy() * beta)
    sumP = sum(P)
    H = np.log(sumP) + beta * np.sum(D * P) / sumP
    P = P / sumP 
    return H, P
...