gpt4 book ai didi

python - 为什么 PyMC3 和 Tensorflow 需要对象的双重命名?

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:05 26 4
gpt4 key购买 nike

在 PyMC3、Tensorflow 和其他一些包中声明对象时,我们需要重复对象的名称,例如

alpha = pymc.Normal('alpha', mu=0, tau=.01)

为什么需要这个?为什么不能简化为类似的东西

alpha = pymc.Normal(mu=0, tau=.01)

pymc.Normal('alpha', mu=0, tau=.01)

乍一看,这似乎是一个奇怪的界面决定。这是惯例问题还是技术问题?

最佳答案

tensorflow/pymc中的名字与变量标识符不同。

示例:

beta = pymc.Normal('alpha', mu=0, tau=.01)完全有效(尽管令人困惑)

这里是名字beta供人类引用,我们可以将其称为a, b, c还。名称“alpha”用作内部名称,将在日志记录和调试中使用。

您的建议alpha = pymc.Normal(mu=0, tau=.01)关于取名alpha并使用它作为默认的内部名称,这是可能的,但有一些问题。

在不同的 namespace 中,变量名称 alpha 可能会被重用:

例如:

values = []
For i in range(10):
alpha = pymc.Normal(mu=0, tau=.01)
values.append(alpha)
# in this case all values will be logged as alpha which will be confusing to debug.

更简单的解决方案:

values = []
For i in range(10):
alpha = pymc.Normal('alpha{}'.format(i), mu=0, tau=.01)
values.append(alpha)
# in this case values will be logged as alpha_<i> which will not be so confusing to debug.

PS:例子是简化的,仅供引用

关于python - 为什么 PyMC3 和 Tensorflow 需要对象的双重命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48961925/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com