예제 #1
0
 def call(self, inputs):
     ternary_kernel = ternarize(self.kernel, H=self.H)
     output = K.dot(inputs, ternary_kernel)
     if self.use_bias:
         output = K.bias_add(output, self.bias)
     if self.activation is not None:
         output = self.activation(output)
     return output
예제 #2
0
    def call(self, x, mask=None):
        Wb = ternarize(self.W, H=self.H)

        if self.bias:
            output = self.activation(K.dot(x, Wb) + self.b)
        else:
            output = self.activation(K.dot(x, Wb))
        return output
예제 #3
0
    def call(self, inputs):
        ternary_kernel = ternarize(self.kernel, H=self.H)
        outputs = K.conv2d(inputs,
                           ternary_kernel,
                           strides=self.strides,
                           padding=self.padding,
                           data_format=self.data_format,
                           dilation_rate=self.dilation_rate)

        if self.use_bias:
            outputs = K.bias_add(outputs,
                                 self.bias,
                                 data_format=self.data_format)

        if self.activation is not None:
            return self.activation(outputs)
        return outputs
예제 #4
0
    def call(self, x, mask=None):
        Wt = ternarize(self.W, H=self.H)
        conv_out = K.conv2d(x,
                            Wt,
                            strides=self.subsample,
                            border_mode=self.border_mode,
                            dim_ordering=self.dim_ordering,
                            filter_shape=self.W_shape)

        if self.bias:
            if self.dim_ordering == 'th':
                conv_out = conv_out + K.reshape(self.b,
                                                (1, self.nb_filter, 1, 1))
            elif self.dim_ordering == 'tf':
                conv_out = conv_out + K.reshape(self.b,
                                                (1, 1, 1, self.nb_filter))
            else:
                raise ValueError('Invalid dim_ordering: ' +
                                 str(self.dim_ordering))

        output = self.activation(conv_out)
        return output
예제 #5
0
def ternary_tanh(x):
    x = K.clip(x, -1, 1)
    return ternarize(x)