Мои коды numpy и pytorch имеют совершенно разные результаты - PullRequest
0 голосов
/ 16 февраля 2019

Я хотел вычислить сумму от 1-й до K-й степени массива и равно вычислить сумму от 1-й до k-й степени тензора.Я обнаружил, что следующие коды и их результаты совершенно разные, и я не знаю почему.

Я отладил код и знаю, что результаты в первом раунде равны.

Код Numpy:

adj_k_prob = adj_prob
adj_k_pow =  adj_prob
for i in range(K):
    adj_k_pow = np.matmul(adj_prob, adj_k_pow)
    adj_k_prob += adj_k_pow

Код Pytorch:

adj_k_prob = adj_prob_tensor
adj_k_pow = adj_prob_tensor
for i in range(K):
    adj_k_pow = torch.matmul(adj_prob_tensor, adj_k_pow)
    adj_k_prob += adj_k_pow

Значения adj_prob_tensor и adj_prob в начале цикла следующие:

tensor([[0.0000, 0.1429, 0.1429, 0.1429, 0.1429, 0.1429, 0.1429, 0.1429],
    [0.2500, 0.0000, 0.2500, 0.2500, 0.0000, 0.0000, 0.0000, 0.2500],
    [0.2500, 0.2500, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000, 0.2500],
    [0.2500, 0.2500, 0.2500, 0.0000, 0.0000, 0.0000, 0.0000, 0.2500],
    [0.5000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.5000, 0.0000],
    [0.5000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.5000, 0.0000],
    [0.3333, 0.0000, 0.0000, 0.0000, 0.3333, 0.3333, 0.0000, 0.0000],
    [0.2500, 0.2500, 0.2500, 0.2500, 0.0000, 0.0000, 0.0000, 0.0000]])

Есть личто-нибудь, что я должен проверить на это?

1 Ответ

0 голосов
/ 21 февраля 2019

Проблема была в использовании назначения.Я должен был использовать .clone () для pytorch и .copy () в numpy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...