-
Notifications
You must be signed in to change notification settings - Fork 108
Open
Description
Dynamax: 1.0.1
JAX: 0.8.2
I am simulating some time series data that are generated from two hypothetical states (num_states=2). The time series measures whether an electronic appliance is off or on (0V or 5V, respectively), simulated with noise with a small amplitude:
fs = 64. # sampling frequency (Hz)
num_timesteps = 3_840
num_states = 2
ts = np.arange(num_timesteps) / fs # time (s)
zs = np.zeros_like(ts)
ys = np.random.normal(loc=0.0, scale=0.05, size=num_timesteps)
current_state = 0
transition_probs = np.array([[0.2, 0.8], [0.3, 0.7]])
for t in range(0, num_timesteps - 64 + 1, 64):
zs[t:t+64] = current_state
current_state = np.random.choice(num_states, replace=True, p=transition_probs[current_state])
ys += 5 * zs
Then I setup a Gaussian Hidden Markov Model:
import jax.random as jr
from dynamax.hidden_markov_model import GaussianHMM
hmm = GaussianHMM(num_states=num_states, emission_dim=1)
hmm_params, hmm_props = hmm.initialize(key=jr.PRNGKey(0), method="kmeans", emissions=ys)
# hmm_params, hmm_props = hmm.initialize(key=jr.PRNGKey(0), method="kmeans")
but I get the following error, that I don't fully understand. Do my inputs have the wrong shape? Or is the initialization not correct?
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[6], [line 1](vscode-notebook-cell:?execution_count=6&line=1)
----> [1](vscode-notebook-cell:?execution_count=6&line=1) true_params, _ = hmm.initialize(
2 initial_probs=initial_probs,
3 transition_matrix=transition_matrix,
4 emission_means=emission_means,
5 emission_covariances=emissions_covs
6 )
File ~/Projects/pytsa/.venv/lib/python3.12/site-packages/dynamax/hidden_markov_model/models/gaussian_hmm.py:808, in GaussianHMM.initialize(self, key, method, initial_probs, transition_matrix, emission_means, emission_covariances, emissions)
806 key1, key2, key3 = jr.split(key , 3)
807 params, props = dict(), dict()
--> [808](https://file+.vscode-resource.vscode-cdn.net/home/robbin/Projects/pytsa/notebooks/~/Projects/pytsa/.venv/lib/python3.12/site-packages/dynamax/hidden_markov_model/models/gaussian_hmm.py:808) params["initial"], props["initial"] = self.initial_component.initialize(
809 key1, method=method, initial_probs=initial_probs
810 )
811 params["transitions"], props["transitions"] = self.transition_component.initialize(
812 key2, method=method, transition_matrix=transition_matrix
813 )
814 params["emissions"], props["emissions"] = self.emission_component.initialize(
815 key3, method=method, emission_means=emission_means, emission_covariances=emission_covariances, emissions=emissions
816 )
File ~/Projects/pytsa/.venv/lib/python3.12/site-packages/dynamax/hidden_markov_model/models/initial.py:64, in StandardHMMInitialState.initialize(self, key, method, initial_probs)
62 # Package the results into dictionaries
63 params = ParamsStandardHMMInitialState(probs=initial_probs)
---> [64](https://file+.vscode-resource.vscode-cdn.net/home/robbin/Projects/pytsa/notebooks/~/Projects/pytsa/.venv/lib/python3.12/site-packages/dynamax/hidden_markov_model/models/initial.py:64) props = ParamsStandardHMMInitialState(probs=ParameterProperties(constrainer=tfb.SoftmaxCentered()))
65 return params, props
File ~/Projects/pytsa/.venv/lib/python3.12/site-packages/tensorflow_probability/substrates/jax/bijectors/softmax_centered.py:65, in SoftmaxCentered.__init__(self, validate_args, name)
63 parameters = dict(locals())
64 with tf.name_scope(name) as name:
---> [65](https://file+.vscode-resource.vscode-cdn.net/home/robbin/Projects/pytsa/notebooks/~/Projects/pytsa/.venv/lib/python3.12/site-packages/tensorflow_probability/substrates/jax/bijectors/softmax_centered.py:65) self._pad = pad_lib.Pad(validate_args=validate_args)
66 super(SoftmaxCentered, self).__init__(
67 forward_min_event_ndims=1,
68 validate_args=validate_args,
69 parameters=parameters,
70 name=name)
File ~/Projects/pytsa/.venv/lib/python3.12/site-packages/tensorflow_probability/substrates/jax/bijectors/pad.py:143, in Pad.__init__(self, paddings, mode, constant_values, axis, validate_args, name)
139 self._mode = mode
140 self._constant_values = tensor_util.convert_nonref_to_tensor(
141 constant_values, dtype_hint=tf.float32, name='constant_values')
142 min_event_ndims_ = int(-np.min(np.pad(
--> [143](https://file+.vscode-resource.vscode-cdn.net/home/robbin/Projects/pytsa/notebooks/~/Projects/pytsa/.venv/lib/python3.12/site-packages/tensorflow_probability/substrates/jax/bijectors/pad.py:143) np.reshape(axis_, newshape=[-1]),
144 mode='constant', pad_width=[[0, 1]])))
145 super(Pad, self).__init__(
146 forward_min_event_ndims=min_event_ndims_,
147 inverse_min_event_ndims=min_event_ndims_,
(...) 150 parameters=parameters,
151 name=name)
TypeError: reshape() got an unexpected keyword argument 'newshape'
Update:
It seems to derive from:.venv/lib/python3.12/site-packages/tensorflow_probability/substrates/jax/bijectors/pad.py:143
My guess is that the function does not have anewshapeargument but rather ashapeargument.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels