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
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