diff --git a/python/tvm/relay/frontend/keras.py b/python/tvm/relay/frontend/keras.py index 28bb81441c9d..75ccec52f309 100644 --- a/python/tvm/relay/frontend/keras.py +++ b/python/tvm/relay/frontend/keras.py @@ -569,13 +569,17 @@ def _convert_separable_convolution(inexpr, keras_layer, etab, data_layout, input weight0 = weightList[0].transpose([2, 3, 0, 1]) else: weight0 = weightList[0] + if isinstance(keras_layer.dilation_rate, (list, tuple)): + dilation = [keras_layer.dilation_rate[0], keras_layer.dilation_rate[1]] + else: + dilation = [keras_layer.dilation_rate, keras_layer.dilation_rate] params0 = { "weight": etab.new_const(weight0), "channels": in_channels * depth_mult, "groups": in_channels, "kernel_size": [kernel_h, kernel_w], "strides": [stride_h, stride_w], - "dilation": [1, 1], + "dilation": dilation, "padding": [0, 0], "data_layout": data_layout, "kernel_layout": kernel_layout, diff --git a/tests/python/frontend/keras/test_forward.py b/tests/python/frontend/keras/test_forward.py index cc6421614e0a..842d803b174d 100644 --- a/tests/python/frontend/keras/test_forward.py +++ b/tests/python/frontend/keras/test_forward.py @@ -310,6 +310,8 @@ def test_forward_conv(self, keras_mod): keras_mod.layers.DepthwiseConv2D(kernel_size=(3, 3), padding="same"), keras_mod.layers.Conv2DTranspose(filters=10, kernel_size=(3, 3), padding="valid"), keras_mod.layers.SeparableConv2D(filters=10, kernel_size=(3, 3), padding="same"), + keras_mod.layers.SeparableConv2D(filters=10, kernel_size=(3, 3), dilation_rate=(2, 2)), + keras_mod.layers.SeparableConv2D(filters=2, kernel_size=(3, 3), dilation_rate=2), ] for conv_func in conv_funcs: x = conv_func(data)