Ejemplo n.º 1
0
 def _preprocess_parameters_for_sampling(self, **parameters):
     parameters, number_samples, number_datapoints = broadcast_parent_values(
         parameters)
     reshaped_parameters, tensor_shape = self._preproces_vector_input(
         parameters, self.vector_parameters)
     shape = tuple([number_samples, number_datapoints] + tensor_shape)
     return reshaped_parameters, shape
Ejemplo n.º 2
0
 def _preprocess_parameters_for_log_prob(self, x, **parameters):
     parameters_and_data = parameters
     parameters_and_data.update({"x_data": x})
     parameters_and_data, number_samples, number_datapoints = broadcast_parent_values(
         parameters_and_data)
     vector_names = self.vector_parameters
     vector_names.add("x_data")
     reshaped_parameters_and_data, _ = self._preproces_vector_input(
         parameters_and_data, vector_names)
     x = reshaped_parameters_and_data.pop("x_data")
     return x, reshaped_parameters_and_data, number_samples, number_datapoints
Ejemplo n.º 3
0
    def calculate_log_probability(self, x, z):
        """
        One line description

        Parameters
        ----------

        Returns
        -------
        """
        reshaped_dict, n_samples, n_datapoints = broadcast_parent_values({"x": x, "z": z})
        labels = np.reshape(reshaped_dict["x"].data, newshape=(n_samples*n_datapoints, 1))
        log_probability = -F.softmax_cross_entropy(reshaped_dict["z"], labels, reduce="no")
        log_probability = F.reshape(log_probability, shape=(n_samples, n_datapoints))
        return log_probability
Ejemplo n.º 4
0
 def _apply_link(
     self, parents_values
 ):  #TODO: This is for allowing discrete data, temporary? (for julia) #For Julia: Very important method
     cont_values, discrete_values = split_dict(
         parents_values, condition=lambda key, val: not is_discrete(val))
     if cont_values:
         reshaped_dict, number_samples, number_datapoints = broadcast_parent_values(
             cont_values)
         reshaped_dict.update(discrete_values)
     else:
         reshaped_dict = discrete_values
     reshaped_output = self.link(reshaped_dict)
     output = {
         key: val.view(size=(number_samples, number_datapoints) +
                       val.shape[1:]) if is_tensor(val) else val
         for key, val in reshaped_output.items()
     }
     return output
Ejemplo n.º 5
0
 def _apply_link(self, parents_values
                 ):  #TODO: This is for allowing discrete data, temporary?
     cont_values, discrete_values = split_dict(
         parents_values,
         condition=lambda key, val: isinstance(val, chainer.Variable))
     if cont_values:
         reshaped_dict, number_samples, number_datapoints = broadcast_parent_values(
             cont_values)
         reshaped_dict.update(discrete_values)
     else:
         reshaped_dict = discrete_values
     reshaped_output = self.link(reshaped_dict)
     output = {
         key: F.reshape(val,
                        (number_samples, number_datapoints) + val.shape[1:])
         if isinstance(val, chainer.Variable) else val
         for key, val in reshaped_output.items()
     }
     return output