jikechao opened a new pull request, #15060:
URL: https://github.com/apache/tvm/pull/15060
This PR fixed two bugs in Conv2DTranspose and Conv3DTranspose. Both of them
are caused by lacking the parsing of the `output_padding` attribute.
In addition, corresponding test cases were added to capture the bug.
### Steps to reproduce
```
import tvm
import tvm.relay as relay
import numpy as np
from tensorflow import keras
from tensorflow.keras import layers, models
input_shape = (2, 33,33,128)
input_data = np.random.random(size=input_shape)
x = layers.Input(shape=input_shape[1:], dtype='float32')
kwargs={'filters':2,'kernel_size':[3, 3],'strides':[2,
2],'output_padding':[1, 1],}# 'data_format':"channels_last"}
# output_padding lead to this bug
layer = keras.layers.Conv2DTranspose(**kwargs)
layer.set_weights(layer.get_weights())
y = layer(x)
model = models.Model(x, y)
model.summary()
res_keras = model(input_data)
shape_dict = {'input_1': input_shape}
mod, params = relay.frontend.from_keras(model, shape_dict,layout='NHWC')
with tvm.transform.PassContext(opt_level=3):
model = relay.build_module.create_executor("graph", mod, tvm.cpu(0),
'llvm', params).evaluate()
test_x_tvm = input_data
res_tvm = model(tvm.nd.array(test_x_tvm.astype('float32'))).numpy()
np.testing.assert_allclose(res_keras, res_tvm, atol=1e-3, rtol=1e-3)
```

BTW, The Conv3DTranspose has a similar bug. The following keras layer can
trigger it:
```
keras_mod.layers.Conv3DTranspose(
filters=2, kernel_size=(3, 3, 3), strides=(2, 2, 2),
output_padding=(1, 1, 1)
),
```
cc @echuraev @Hzfengsy @masahi
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]