Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

utils.get_true_distribution函数有两个逻辑问题 #78

Open
y17733806775 opened this issue Feb 25, 2024 · 0 comments
Open

utils.get_true_distribution函数有两个逻辑问题 #78

y17733806775 opened this issue Feb 25, 2024 · 0 comments

Comments

@y17733806775
Copy link

1.作者想让true_prob_s 的每一行数组都代表一个时间步t中的每个节点的贡献率,但实际上每一组数组都混入了一个下一个t的数据
2.true_prob_s 最后会有一行零行

1.混入下一个时间步的数据问题:
这个问题发生的原因是,在每次循环的末尾,true_s 和 true_o 被重置为零,并开始累积下一个时间步的数据,但在重置之前,它们的值已经被用于更新 true_prob_s 和 true_prob_o。这意味着每次当 current_t 更新时,我们实际上是在使用包含下一个时间步 t 开始部分的数据来计算当前时间步的分布。
解决方案:应该在更新 current_t 之前,立即计算并存储当前时间步的分布。这样可以确保每个时间步的数据仅用于其对应的分布计算中。

2.最后一行为零的问题:
这个问题发生是因为在循环结束后,你又执行了一次 np.concatenate 操作,将 true_s 和 true_o(这时已经被重置为零)添加到了 true_prob_s 和 true_prob_o。由于在循环的最后一次迭代中,true_s 和 true_o 已经被重置并且没有再次被填充(因为没有更多的数据),所以你最终得到了一行全零。
解决方案:在循环结束后,应该检查 true_s 和 true_o 是否全为零(或者更准确地,是否有必要将它们添加到分布中)。如果它们确实包含有效数据(即循环中的最后一个时间步的数据),那么应该在重置之前添加它们。否则,就不应该再添加。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant