Обеспечивает ли 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
Узлы с нулевым значением не являются проблемой, их не было раньше, когда я запускал код с положительными значениями узлов.
Конечно, добавили.
Я понял это. Значения веса (хранящиеся в ненормализованных вероятностях) добавляются, чтобы получить значение, называемое 'norm_const', которое затем делит ненормализованные вероятности. Таким образом, поскольку они добавляются, возникает возможность возникновения нуля, следовательно, ошибка деления на ноль.
Привет, я автор node2vec
, нет поддержки отрицательных весов :)
Да, я понял. Спасибо!
Можете ли вы опубликовать свой код, который поможет нам отладить.