Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dwiel/tensorflow_hmm
A tensorflow implementation of an HMM layer
https://github.com/dwiel/tensorflow_hmm
hmm tensorflow tensorflow-hmm viterbi
Last synced: about 2 months ago
JSON representation
A tensorflow implementation of an HMM layer
- Host: GitHub
- URL: https://github.com/dwiel/tensorflow_hmm
- Owner: dwiel
- License: apache-2.0
- Created: 2016-03-13T03:00:15.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-01-23T18:11:27.000Z (almost 7 years ago)
- Last Synced: 2024-09-18T01:19:01.721Z (3 months ago)
- Topics: hmm, tensorflow, tensorflow-hmm, viterbi
- Language: Jupyter Notebook
- Size: 999 KB
- Stars: 287
- Watchers: 16
- Forks: 80
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-tensorflow - HMM in TensorFlow - Implementation of viterbi and forward/backward algorithms for HMM (Models/Projects)
- Awesome-TensorFlow-Chinese - HMM in TensorFlow - Implementation of viterbi and forward/backward algorithms for HMM (模型项目 / 微信群)
- awesome-tensorflow - HMM in TensorFlow - Implementation of viterbi and forward/backward algorithms for HMM (Models/Projects)
- fucking-awesome-tensorflow - HMM in TensorFlow - Implementation of viterbi and forward/backward algorithms for HMM (Models/Projects)
README
[![Build Status](https://travis-ci.org/dwiel/tensorflow_hmm.svg?branch=master)](https://travis-ci.org/dwiel/tensorflow_hmm)
# tensorflow_hmm
Tensorflow and numpy implementations of the HMM viterbi and forward/backward algorithms.See [Keras example](https://github.com/dwiel/tensorflow_hmm/blob/master/tensorflow_hmm/hmm_layer.py) for an example of how to use the Keras HMMLayer.
See [test_hmm.py](https://github.com/dwiel/tensorflow_hmm/blob/master/test/test_hmm.py) for usage examples. Here is an excerpt of the documentation from hmm.py for reference for now.
See also viterbi_wikipedia_example.py which replicates the viterbi example on wikipedia.
```
class HMM(object):
"""
A class for Hidden Markov Models.The model attributes are:
- K :: the number of states
- P :: the K by K transition matrix (from state i to state j,
(i, j) in [1..K])
- p0 :: the initial distribution (defaults to starting in state 0)
"""def __init__(self, P, p0=None):
class HMMTensorflow(HMM):
def forward_backward(self, y):
"""
runs forward backward algorithm on state probabilities y
Arguments
---------
y : np.array : shape (T, K) where T is number of timesteps and
K is the number of states
Returns
-------
(posterior, forward, backward)
posterior : list of length T of tensorflow graph nodes representing
the posterior probability of each state at each time step
forward : list of length T of tensorflow graph nodes representing
the forward probability of each state at each time step
backward : list of length T of tensorflow graph nodes representing
the backward probability of each state at each time step
"""
def viterbi_decode(self, y, nT):
"""
Runs viterbi decode on state probabilies y.
Arguments
---------
y : np.array : shape (T, K) where T is number of timesteps and
K is the number of states
nT : int : number of timesteps in y
Returns
-------
(s, pathScores)
s : list of length T of tensorflow ints : represents the most likely
state at each time step.
pathScores : list of length T of tensorflow tensor of length K
each value at (t, k) is the log likliehood score in state k at
time t. sum(pathScores[t, :]) will not necessary == 1
"""
```