Skip to content

Commit

Permalink
[Relay] Keras frontend upsample and 1 channel conv2d fixes (apache#3937)
Browse files Browse the repository at this point in the history
* Fix upsample layout in keras frontend.

* Fixed group conv being used instead of conv when channels=1

* Add new conv2d test to catch bugs when channels=1.
  • Loading branch information
jwfromm authored and wweic committed Sep 30, 2019
1 parent a0a883b commit db0cc4a
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 3 deletions.
2 changes: 1 addition & 1 deletion python/tvm/relay/frontend/keras.py
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ def _convert_pooling(inexpr, keras_layer, etab):
def _convert_upsample(inexpr, keras_layer, _):
_check_data_format(keras_layer)
upsample_type = type(keras_layer).__name__
params = {'layout': 'NHWC'}
params = {}
if upsample_type == 'UpSampling1D':
h = keras_layer.size
params['scale'] = h
Expand Down
2 changes: 1 addition & 1 deletion src/relay/op/nn/convolution.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ bool Conv2DRel(const Array<Type>& types, int num_inputs, const Attrs& attrs,
CHECK_EQ(param->dilation.size(), 2);
Array<IndexExpr> wshape;

if (tvm::ir::Equal(param->channels, param->groups)) {
if (tvm::ir::Equal(param->channels, param->groups) && !tvm::ir::Equal(param->channels, 1)) {
// infer weight's shape for depthwise convolution
wshape = {{dshape_nchw[1], param->groups / dshape_nchw[1], param->kernel_size[0],
param->kernel_size[1]}};
Expand Down
3 changes: 2 additions & 1 deletion tests/python/frontend/keras/test_forward.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ def test_forward_conv():
strides=(2, 2), padding='same'),
keras.layers.Conv2D(filters=10, kernel_size=(3, 3),
dilation_rate=(2, 2), padding='same'),
keras.layers.Conv2D(filters=1, kernel_size=(3, 3), padding='same'),
keras.layers.DepthwiseConv2D(kernel_size=(3, 3), padding='same'),
keras.layers.Conv2DTranspose(filters=10, kernel_size=(3, 3), padding='valid'),
keras.layers.SeparableConv2D(filters=10, kernel_size=(3, 3), padding='same')]
Expand All @@ -194,7 +195,7 @@ def test_forward_upsample(interpolation='nearest'):
data = keras.layers.Input(shape=(32, 32, 3))
x = keras.layers.UpSampling2D(size=(3, 3), interpolation=interpolation)(data)
keras_model = keras.models.Model(data, x)
verify_keras_frontend(keras_model, need_transpose=False)
verify_keras_frontend(keras_model)


def test_forward_reshape():
Expand Down

0 comments on commit db0cc4a

Please sign in to comment.