def build(self, input_shape):
        input_shape = input_shape.as_list()
        input_hidden_size = input_shape[1]
        kernel_shape = [input_hidden_size, self.num_outputs]

        self.kernel = tf.get_variable("kernel",
                                      shape=kernel_shape,
                                      initializer=self.kernel_initializer,
                                      regularizer=self.kernel_regularizer,
                                      dtype=self.dtype,
                                      trainable=True)

        if not self.log_alpha_initializer:
            # default log alpha set s.t. \alpha / (\alpha + 1) = .1
            self.log_alpha_initializer = tf.random_normal_initializer(
                mean=2.197, stddev=0.01, dtype=self.dtype)

        self.log_alpha = tf.get_variable(
            "log_alpha",
            shape=kernel_shape,
            initializer=self.log_alpha_initializer,
            dtype=self.dtype,
            trainable=True)

        layer_utils.add_variable_to_collection(
            (self.kernel, self.log_alpha), [THETA_LOGALPHA_COLLECTION], None)

        if self.use_bias:
            self.bias = self.add_variable(name="bias",
                                          shape=(self.num_outputs, ),
                                          initializer=self.bias_initializer,
                                          regularizer=self.bias_regularizer,
                                          trainable=True,
                                          dtype=self.dtype)
        else:
            self.bias = None
        self.built = True
Example #2
0
    def build(self, input_shape):
        input_shape = input_shape.as_list()
        input_hidden_size = input_shape[1]
        kernel_shape = [input_hidden_size, self.num_outputs]

        self.kernel = tf.get_variable("kernel",
                                      shape=kernel_shape,
                                      initializer=self.kernel_initializer,
                                      regularizer=self.kernel_regularizer,
                                      dtype=tf.float32,
                                      trainable=True)

        if not self.log_sigma2_initializer:
            self.log_sigma2_initializer = tf.constant_initializer(
                value=-10, dtype=tf.float32)

        self.log_sigma2 = tf.get_variable(
            "log_sigma2",
            shape=kernel_shape,
            initializer=self.log_sigma2_initializer,
            dtype=tf.float32,
            trainable=True)

        layer_utils.add_variable_to_collection(
            (self.kernel, self.log_sigma2), [THETA_LOGSIGMA2_COLLECTION], None)

        if self.use_bias:
            self.bias = self.add_variable(name="bias",
                                          shape=(self.num_outputs, ),
                                          initializer=self.bias_initializer,
                                          regularizer=self.bias_regularizer,
                                          trainable=True,
                                          dtype=self.dtype)
        else:
            self.bias = None
        self.built = True