如何从张量流概率中使用 HiddenMarkovModel?

How to use HiddenMarkovModel from tensorflow probability?

我正在学习本教程:

https://github.com/tensorflow/probability/blob/master/tensorflow_probability/examples/jupyter_notebooks/Multiple_changepoint_detection_and_Bayesian_model_selection.ipynb

其中包含引用和使用 tfp 中的 HiddenMarkovModel class 的代码。本教程中执行此操作的代码位于此处:

import tensorflow_probability as tfp
from tensorflow_probability import distributions as tfd

hmm = tfd.HiddenMarkovModel(
  initial_distribution=tfd.Categorical(
      logits=batch_initial_state_logits),
  transition_distribution=tfd.Categorical(probs=batch_transition_probs),
  observation_distribution=tfd.Poisson(trainable_rates),
  num_steps=len(observed_counts))

然而,当我到达这一行时,出现以下错误:

AttributeError: module 'tensorflow_probability.python.distributions' has no attribute 'HiddenMarkovModel'

在此处查看 tfp 中的发行版文档:

https://www.tensorflow.org/probability/api_docs/python/tfp/distributions

我看到没有名为 HiddenMarkovModel 的 class,所以我想知道我做错了什么,无法获得本教程使用的 class?这是一个官方教程,所以我无法想象它只是 "wrong" 并且不存在 HiddenMarkovModel class。

目前的稳定版本0.5已经发布了一段时间。 API 文档匹配该版本。我们正在准备发布 0.6,其中有 HMM。与此同时,您可以安装 tfp-nightly,以获得最新的好处。然后您应该确保卸载您拥有的那个 (pip uninstall tensorflow-probability) 并类似地安装 tf-nightly 代替 TensorFlow 稳定版。喂!感谢使用 tfp!

正如@wpercy 在他的评论中提到的,参考 Github 存储库总是一个好主意。在过去的 4 天里,我一直在为这个问题而烦恼。只需参考 Github 存储库,然后自己检查层次结构。

比如HiddenMarkovModel,在Git界面的'Go to file'选项中搜索,发现HiddenMarkovModel实际上是hidden_markov_model.py中的一个class。所以正确的导入语句变成 from tensorflow_probability.python.distributions.hidden_markov_model import HiddenMarkovModel.

类似地适用于其他功能,如 from tensorflow_probability.python.distributions.categorical import Categorical

查看 https://github.com/tensorflow/probability/blob/master/tensorflow_probability/python/distributions/hidden_markov_model.py 了解更多问题。