Skip to content
6 changes: 6 additions & 0 deletions python/tvm/relay/frontend/keras.py
Original file line number Diff line number Diff line change
Expand Up @@ -1429,6 +1429,12 @@ def _check_model_is_tf_keras():
def _convert_input_layer(keras_layer):
input_name = keras_layer.name
input_shape = shape[input_name] if shape is not None and input_name in shape else None
if len(input_shape) > 1 and any(dim <= 0 for dim in input_shape[1:]):
msg = (
"Expected input's non-batch dimensions to have positive length, "
f"but the input has a shape of {input_shape}"
)
raise RuntimeError(msg)
etab.set_expr(input_name, new_var(input_name, shape=input_shape))

def _convert_layer(keras_layer, etab, scope=""):
Expand Down
6 changes: 6 additions & 0 deletions tests/python/frontend/keras/test_forward.py
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,12 @@ def test_forward_pool(self, keras_mod):
y = keras_mod.layers.AveragePooling2D((3, 3), strides=(1, 1), padding="same")(data)
keras_model = keras_mod.models.Model(data, y)
verify_keras_frontend(keras_model)
# reject the invalid input shape
data = keras_mod.layers.Input(shape=(0, 3, 6, 4))
x = keras_mod.layers.GlobalAveragePooling3D()(data)
keras_model = keras_mod.models.Model(data, x)
with pytest.raises(RuntimeError):
verify_model(keras_model)

def test_forward_conv1d(self, keras_mod):
"""test_forward_conv1d"""
Expand Down