here is an example of what I want to do
import pytensor.tensor as pt
import numpy as np
import pymc as pm
obs_dataset = np.random.rand(5, 6)
mask = (obs_dataset>1)
#this works
with pm.Model() as m:
mu = pm.Normal("mu")
sigma = pm.HalfNormal("sigma")
bcast_mu = pt.broadcast_to(mu, obs_dataset.shape)
bcast_sigma = pt.broadcast_to(sigma, obs_dataset.shape)
pm.Normal("likelihood", bcast_mu[mask], bcast_sigma[mask], observed=obs_dataset[mask])
m.point_logps() # {'mu': -0.92, 'sigma': -0.73, 'likelihood': -61.98}
#how to do this ? this doesn't work, how to do this when obs_dataset is mutable ?
with pm.Model() as m:
obs_dataset = pm.MutableData('obs_dataset', obs_dataset)
mask = (obs_dataset >1)
mu = pm.Normal("mu")
sigma = pm.HalfNormal("sigma")
bcast_mu = pt.broadcast_to(mu, obs_dataset.shape)
bcast_sigma = pt.broadcast_to(sigma, obs_dataset.shape)
pm.Normal("likelihood", bcast_mu[mask], bcast_sigma[mask], observed=obs_dataset[mask])
m.point_logps()
basically the mask is mutable, because the obs_dataset is a MutableData so how can I do the indexing in a mutable way?