def __init__(self, data, name, learnable=False, is_observed=False): self._current_value = coerce_to_dtype(data, is_observed) self.name = name self._observed = is_observed self.parents = () self.learnable = learnable if learnable: self.link = L.Bias(axis=1, shape=self._current_value.shape[1:])
def __init__(self, data, name, learnable=False, is_observed=False): self.name = name self.distribution = distributions.DeterministicDistribution() self._evaluated = False self._observed = is_observed self.parents = set() self.ancestors = set() self._type = "Deterministic" self.learnable = learnable self.link = None self._value = coerce_to_dtype(data, is_observed) if self.learnable: if not is_discrete(data): self._value = torch.nn.Parameter(coerce_to_dtype(data, is_observed), requires_grad=True) self.link = ParameterModule(self._value) # add to optimizer; opt checks links else: self.learnable = False warnings.warn('Currently discrete parameters are not learnable. Learnable set to False')
def observe(self, data, random_indices=()): """ Summary """ if isinstance(data, RandomVariable): self.dataset = data self.has_random_dataset = True else: self._observed_value = coerce_to_dtype(data, is_observed=True) self.has_observed_value = True self._observed = True
def observe(self, data): """ Method. It assigns an observed value to a RandomVariable. Args: data: torch.Tensor, numeric, or np.ndarray. Input observed data. Returns: None """ data = pandas_frame2value(data, self.name) if isinstance(data, RandomVariable): self.dataset = data self.has_random_dataset = True else: self._observed_value = coerce_to_dtype(data, is_observed=True) self.has_observed_value = True self._observed = True
# # import numpy as np # # # x = np.random.normal(size=(10, 3)) # T = coerce_to_dtype(x) # T.device ## import numpy as np from brancher.variables import ProbabilisticModel from brancher.standard_variables import NormalVariable, LaplaceVariable, CauchyVariable, LogNormalVariable from brancher import inference from brancher.config import device from brancher.utilities import coerce_to_dtype print('Current device: ' + device.type) # # Real model # nu_real = 1. # mu_real = -2. # x_real = LaplaceVariable(mu_real, nu_real, "x_real") # data = x_real._get_sample(number_samples=50) ## import pandas as pd x = np.random.normal(size=(10, 3)) d = pd.DataFrame(x) t = coerce_to_dtype(d) print(type(t))
def value(self, val): self._current_value = coerce_to_dtype(val)
def value(self, val): self._current_value = coerce_to_dtype(val, is_observed=self.is_observed)
from importlib import reload is_observed = False ## def check_value_datatype(t): print(t) print(type(t)) print('Shape: ', t.shape) print('Dtype: ', t.dtype) ## data = 1 t = utilities.coerce_to_dtype(data, is_observed) check_value_datatype(t) ## data = 1.4 utilities.coerce_to_dtype(data, is_observed) ## data = np.float64(4.3) utilities.coerce_to_dtype(data, is_observed) ## data = np.int8(4.3) utilities.coerce_to_dtype(data, is_observed) ##