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
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
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
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
def ternary_tanh(x): x = K.clip(x, -1, 1) return ternarize(x)