Exemplo n.º 1
0
class Param:
    '''
    Copied and modified from GPflow(https://github.com/GPflow/)
    '''
    def __init__(self,
                 value,
                 transform=None,
                 fixed=False,
                 name=None,
                 learning_rate=None,
                 summ=False):
        self.value = value
        self.fixed = fixed

        if name is None:
            self.name = "param"
        else:
            self.name = name

        if transform is None:
            self.transform = transforms.Identity()
        else:
            self.transform = transform

        if self.fixed:
            self.tf_opt_var = tf.constant(self.value,
                                          name=name,
                                          dtype=float_type)
        else:
            self.tf_opt_var = Variable(self.transform.backward(self.value),
                                       name=name,
                                       dtype=float_type)

        if learning_rate is not None and fixed is False:
            self.tf_opt_var.set_learning_rate(learning_rate)

        if summ:
            self.variable_summaries(self.tf_opt_var)

    def get_optv(self):
        return self.tf_opt_var

    def get_tfv(self):
        if self.fixed:
            return self.tf_opt_var
        else:
            return self.transform.tf_forward(self.tf_opt_var)

    def variable_summaries(self, var):
        tf.summary.histogram(self.name, var)

    @property
    def shape(self):
        return self.value.shape
Exemplo n.º 2
0
class Param:
    '''
    Inheriting from GPFlow
    TODO : add a fixed flag in which case this should return tf.tensor instead of tf.Variable
    '''
    def __init__(self,value,transform = None,fixed=False,name=None,learning_rate=None,summ=False):
        self.value = value
        self.fixed = fixed

        if name is None:
            self.name = "param"
        else:
            self.name = name

        if transform is None:
            self.transform=transforms.Identity()
        else:
            self.transform = transform

        if self.fixed:
            self.tf_opt_var = tf.constant(self.value,name=name,dtype=float_type)
        else:
            self.tf_opt_var = Variable(self.transform.backward(self.value),name=name,dtype=float_type)

        if learning_rate is not None:
            self.tf_opt_var.set_learning_rate(learning_rate)

        if summ:
            self.variable_summaries(self.tf_opt_var)

    def get_optv(self):
        return self.tf_opt_var

    def get_tfv(self):
        if self.fixed:
            return self.tf_opt_var
        else:
            return self.transform.tf_forward(self.tf_opt_var)

    def variable_summaries(self,var):
      """Attach a lot of summaries to a Tensor (for TensorBoard visualization)."""
      mean = tf.reduce_mean(var)
      tf.summary.scalar(self.name, mean)
      tf.summary.histogram(self.name, var)

    @property
    def shape(self):
        return self.value.shape