示例#1
0
 def __init__(self, N, K, A):
     self.A = A
     self.N = N
     self.K = K
     self.parameters = {
         "noise": ParameterArray(1. * tf.ones((1, 1)))
     }
     self.nodes = {
         "latent": GaussianArray.uniform((N, K)),
         "heterogeneity": GaussianArray.uniform((N, 1)),
         "product": GaussianArray.uniform((N, N, K)),
         "vector": GaussianArray.uniform((N, N, K+2)),
         "linear_predictor": GaussianArray.uniform((N, N)),
         "noisy_linear_predictor": GaussianArray.uniform((N, N)),
         "links": tf.zeros((N, N))
     }
     self.factors = {
         "latent_prior": Prior(GaussianArray.from_shape((N, K), 0., 1.)),
         "heterogeneity_prior": Prior(GaussianArray.from_shape((N, 1), 0., 1.)),
         "product": Product((N, K), (N, N, K)),
         "concatenate": Concatenate({"a_u": (N, N, 1), "a_v": (N, N, 1), "s_uv": (N, N, K)}, (N, N, K+2)),
         "sum": Sum((N, N, K+2), (N, N)),
         "noise": AddVariance((N, N)),
         "adjacency": Probit((N, N))
     }
     self._current_iter = 0
     self._break_symmetry()
示例#2
0
 def __init__(self, child: GaussianArray, mean: float = 0., variance: float = 1., initial=None, name=""):
     super().__init__()
     self._deterministic = False
     self.mean = ParameterArray(mean, True, name=name+".mean")
     self.variance = ParameterArrayLogScale(variance, True, name=name+".variance")
     self._parameters = {"mean": self.mean, "variance": self.variance}
     self.child = child
     self.shape = child.shape()
     self.prior = GaussianArray.from_shape(self.shape, self.mean.value(), self.variance.value())
     # initialize child
     self.message_to_child = GaussianArray.from_array(initial, tf.ones_like(initial) * variance * 0.1)
     self.child.set_to(self.message_to_child)