Поддерживает ли node2vec отрицательные веса ребер? - PullRequest
1 голос
/ 08 апреля 2019

Предоставляет ли node2vec поддержку ребер с отрицательными весами?У меня есть список ребер с несколькими ребрами, которые имеют отрицательное значение, но я странно получаю ZeroDivisionError при запуске кода.Там нет нулевых ребер, однако, я проверил.

Редактировать: попросили поделиться кодом.Я не сделал никаких изменений в исходном репо, поэтому вставляю здесь точные строки, выдающие ошибку.

unnormalized_probs = []
    for dst_nbr in sorted(G.neighbors(dst)):
        if dst_nbr == src:
            unnormalized_probs.append(G[dst][dst_nbr]['weight']/p)
        elif G.has_edge(dst_nbr, src):
            unnormalized_probs.append(G[dst][dst_nbr]['weight'])
        else:
            unnormalized_probs.append(G[dst][dst_nbr]['weight']/q)
    norm_const = sum(unnormalized_probs)
    normalized_probs =  [float(u_prob)/norm_const for u_prob in unnormalized_probs]

Получение ошибки ZeroDivisionError в последней строке.Мой список краев, который используется в качестве входных данных для этого, записан следующим образом:

0 0 1
234 11 -2
12 0 -1

Узлы с нулевым значением не являются проблемой, они не были раньше, когда я выполнял код для положительных значений узлов.

1 Ответ

0 голосов
/ 08 апреля 2019

Я понял это.Весовые значения (сохраненные в ненормализованных вероятностях) добавляются, чтобы получить значение, называемое norm_const, которое затем делит ненормализованные пробники.Таким образом, поскольку они добавляются, возникает вероятность возникновения нуля, следовательно, ошибка деления на ноль.

...