我想计算一个数组的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
火炬代码:
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]])
我需要检查什么吗?
答案 0 :(得分:0)
问题出在使用分配。我应该在pypy中使用.clone()作为pytorch并在numpy中使用.copy()。