google / google/qkeras

QSeparableConv2D: 'Keyword argument not understood:', 'depthwise_activation'

Open
#76 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
584
Forks
108
PR merge metrics
No merged PRs in 30d

Description

For the QSeparableConv2D layer, a error is being prompted saying that the keyword argument for depthwise_activation is not understood. Following the sample code from the readme, this error is prompted. Below is the code that prompted this error.

```
tensorflow==2.5.0
Qkeras==0.9.0
```

```python
from tensorflow.keras.layers import *
from qkeras import *

def getQModel(INPUT_SHAPE,N_CLASSES):
inputs = Input(INPUT_SHAPE)

x = QConv2D(18, (3, 3),
kernel_quantizer="stochastic_ternary",
bias_quantizer="ternary", name="first_conv2d")(inputs)
x = QActivation("quantized_relu(3)")(x)
x = QSeparableConv2D(32, (3, 3),
depthwise_quantizer=quantized_bits(4, 0, 1),
pointwise_quantizer=quantized_bits(3, 0, 1),
bias_quantizer=quantized_bits(3),
depthwise_activation=quantized_tanh(6, 2, 1))(x)
x = QActivation("quantized_relu(3)")(x)
x = Flatten()(x)
x = QDense(NB_CLASSES,
kernel_quantizer=quantized_bits(3),
bias_quantizer=quantized_bits(3))(x)
x = QActivation("quantized_bits(20, 5)")(x)
yh = Activation("softmax")(x)

model = tf.keras.Model(inputs, yh)
print(model.summary())
return model

qmodel = getQModel(INPUT_SHAPE,N_CLASSES)
```

The error itself.

```
TypeError Traceback (most recent call last)
/var/folders/1l/1j39gqlj2373rny0fddzmbgw0000gn/T/ipykernel_35211/3806686309.py in
26 return model
27
---> 28 qmodel = getQModel(INPUT_SHAPE,N_CLASSES)

/var/folders/1l/1j39gqlj2373rny0fddzmbgw0000gn/T/ipykernel_35211/3806686309.py in getQModel(INPUT_SHAPE, N_CLASSES)
9 bias_quantizer="ternary", name="first_conv2d")(inputs)
10 x = QActivation("quantized_relu(3)")(x)
---> 11 x = QSeparableConv2D(32, (3, 3),
12 depthwise_quantizer=quantized_bits(4, 0, 1),
13 pointwise_quantizer=quantized_bits(3, 0, 1),

~/opt/anaconda3/envs/golden/lib/python3.8/site-packages/qkeras/qconvolutional.py in __init__(self, filters, kernel_size, strides, padding, data_format, dilation_rate, depth_multiplier, activation, use_bias, depthwise_initializer, pointwise_initializer, bias_initializer, depthwise_regularizer, pointwise_regularizer, bias_regularizer, activity_regularizer, depthwise_constraint, pointwise_constraint, bias_constraint, depthwise_quantizer, pointwise_quantizer, bias_quantizer, **kwargs)
766 activation = get_quantizer(activation)
767
--> 768 super(QSeparableConv2D, self).__init__(
769 filters=filters,
770 kernel_size=kernel_size,

~/opt/anaconda3/envs/golden/lib/python3.8/site-packages/tensorflow/python/keras/layers/convolutional.py in __init__(self, filters, kernel_size, strides, padding, data_format, dilation_rate, depth_multiplier, activation, use_bias, depthwise_initializer, pointwise_initializer, bias_initializer, depthwise_regularizer, pointwise_regularizer, bias_regularizer, activity_regularizer, depthwise_constraint, pointwise_constraint, bias_constraint, **kwargs)
2205 bias_constraint=None,
2206 **kwargs):
-> 2207 super(SeparableConv2D, self).__init__(
2208 rank=2,
2209 filters=filters,

~/opt/anaconda3/envs/golden/lib/python3.8/site-packages/tensorflow/python/keras/layers/convolutional.py in __init__(self, rank, filters, kernel_size, strides, padding, data_format, dilation_rate, depth_multiplier, activation, use_bias, depthwise_initializer, pointwise_initializer, bias_initializer, depthwise_regularizer, pointwise_regularizer, bias_regularizer, activity_regularizer, depthwise_constraint, pointwise_constraint, bias_constraint, trainable, name, **kwargs)
1784 name=None,
1785 **kwargs):
-> 1786 super(SeparableConv, self).__init__(
1787 rank=rank,
1788 filters=filters,

~/opt/anaconda3/envs/golden/lib/python3.8/site-packages/tensorflow/python/keras/layers/convolutional.py in __init__(self, rank, filters, kernel_size, strides, padding, data_format, dilation_rate, groups, activation, use_bias, kernel_initializer, bias_initializer, kernel_regularizer, bias_regularizer, activity_regularizer, kernel_constraint, bias_constraint, trainable, name, conv_op, **kwargs)
127 conv_op=None,
128 **kwargs):
--> 129 super(Conv, self).__init__(
130 trainable=trainable,
131 name=name,

~/opt/anaconda3/envs/golden/lib/python3.8/site-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
520 self._self_setattr_tracking = False # pylint: disable=protected-access
521 try:
--> 522 result = method(self, *args, **kwargs)
523 finally:
524 self._self_setattr_tracking = previous_value # pylint: disable=protected-access

~/opt/anaconda3/envs/golden/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in __init__(self, trainable, name, dtype, dynamic, **kwargs)
345 }
346 # Validate optional keyword arguments.
--> 347 generic_utils.validate_kwargs(kwargs, allowed_kwargs)
348
349 # Mutable properties

~/opt/anaconda3/envs/golden/lib/python3.8/site-packages/tensorflow/python/keras/utils/generic_utils.py in validate_kwargs(kwargs, allowed_kwargs, error_message)
1135 for kwarg in kwargs:
1136 if kwarg not in allowed_kwargs:
-> 1137 raise TypeError(error_message, kwarg)
1138
1139

TypeError: ('Keyword argument not understood:', 'depthwise_activation')
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.