Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

We could not automatically infer the shape of the Lambda's output. Please specify the output_shape argument for this Lambda layer. #3038

Open
zlao3118 opened this issue Jun 6, 2024 · 9 comments

Comments

@zlao3118
Copy link

zlao3118 commented Jun 6, 2024

Traceback (most recent call last):
File "D:\Mask_RCNN-2.1\Mask_RCNN-2.1\samples\balloon\balloon.py", line 332, in
model = modellib.MaskRCNN(mode="inference", config=config,
File "D:\Mask_RCNN-2.1\Mask_RCNN-2.1\samples\balloon\model.py", line 1768, in init
self.keras_model = self.build(mode=mode, config=config)
File "D:\Mask_RCNN-2.1\Mask_RCNN-2.1\samples\balloon\model.py", line 1950, in build
fpn_classifier_graph(rpn_rois, mrcnn_feature_maps, config.IMAGE_SHAPE,
File "D:\Mask_RCNN-2.1\Mask_RCNN-2.1\samples\balloon\model.py", line 916, in fpn_classifier_graph
shared = KL.Lambda(lambda x: K.squeeze(K.squeeze(x, 3), 2),
File "D:\python310\lib\site-packages\keras\src\utils\traceback_utils.py", line 122, in error_handler
raise e.with_traceback(filtered_tb) from None
File "D:\python310\lib\site-packages\keras\src\layers\core\lambda_layer.py", line 95, in compute_output_shape
raise NotImplementedError(
NotImplementedError: Exception encountered when calling Lambda.call().

We could not automatically infer the shape of the Lambda's output. Please specify the output_shape argument for this Lambda layer.

Arguments received by Lambda.call():
• args=('<KerasTensor shape=(None, 1000, 1, 1, 1024), dtype=float32, sparse=False, name=keras_tensor_428>',)
• kwargs={'mask': 'None'}

@fata1error404
Copy link

Same problem here, which appears in the line
model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=config)

I am running
Tensorflow 2.16.1
TensorRT 8.6.1
Cuda 12.3
Cudnn 8.0

Traceback (most recent call last):
File "/home/fata1error404/Mask-RCNN-TF2/samples/test.py", line 36, in
model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=config)
File "/home/fata1error404/.local/lib/python3.10/site-packages/mrcnn/model.py", line 1831, in init
self.keras_model = self.build(mode=mode, config=config)
File "/home/fata1error404/.local/lib/python3.10/site-packages/mrcnn/model.py", line 2029, in build
fpn_classifier_graph(rpn_rois, mrcnn_feature_maps, input_image_meta,
File "/home/fata1error404/.local/lib/python3.10/site-packages/mrcnn/model.py", line 938, in fpn_classifier_graph
shared = KL.Lambda(lambda x: K.squeeze(K.squeeze(x, 3), 2),
File "/home/fata1error404/.local/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py", line 123, in error_handler
raise e.with_traceback(filtered_tb) from None
File "/home/fata1error404/.local/lib/python3.10/site-packages/keras/src/layers/core/lambda_layer.py", line 97, in compute_output_shape
raise NotImplementedError(
NotImplementedError: Exception encountered when calling Lambda.call().

We could not automatically infer the shape of the Lambda's output. Please specify the output_shape argument for this Lambda layer.

Arguments received by Lambda.call():
• args=('<KerasTensor shape=(None, 1000, 1, 1, 1024), dtype=float32, sparse=False, name=keras_tensor_393>',)
• kwargs={'mask': 'None'}

@userwatch
Copy link

userwatch commented Jun 14, 2024

Hello I was able to run it in colab. I also encountered the same errors. It was very difficult.

https://github.com/z-mahmud22/Mask-RCNN_TF2.14.0 I used the repo here.

@zlao3118
Copy link
Author

zlao3118 commented Jul 1, 2024

still not solved

@userwatch
Copy link

userwatch commented Jul 6, 2024

Hello @zlao3118 zlao3188 Which versions do you use? tensorflow==2.5.0 keras==2.3.1 python 3.8.0 Have you tried?

@knutsona
Copy link

I was able to solve it with python 3.11 and tensorflow 2.12.0

@like22co
Copy link

like22co commented Oct 9, 2024

I was able to solve it with python 3.11 and tensorflow 2.12.0
Which versions do you use for keras?

@claudiaortiz1311
Copy link

Hi! I solved it by defining those output_shape parameters in my model.py file on functions that use Lambda layer.
But as recommended above, it is better to update Tensorflow because other related errors will appear throughout the execution of the model.

🟢 Change this :

 gt_boxes = KL.Lambda(lambda x: norm_boxes_graph(
                x, K.shape(input_image)[1:3]))(input_gt_boxes)

for this:

gt_boxes = KL.Lambda(lambda x: norm_boxes_graph(
               x, K.shape(input_image)[1:3]), output_shape=(None, 4))(input_gt_boxes)

🟢 change this:

active_class_ids = KL.Lambda(
                lambda x: parse_image_meta_graph(x)["active_class_ids"]
                )(input_image_meta)

for this:

 active_class_ids = KL.Lambda(
                lambda x: parse_image_meta_graph(x)["active_class_ids"], 
                output_shape=(None,))(input_image_meta)

🟢 and this:
output_rois = KL.Lambda(lambda x: x * 1, name="output_rois")(rois)
for this:
output_rois = KL.Lambda(lambda x: x * 1, output_shape=(None, 4), name="output_rois")(rois)
in model.py file

@like22co
Copy link

like22co commented Oct 10, 2024 via email

@claudiaortiz1311
Copy link

Probably a 1.* too. I also have to update Tensorflow and keep fighting to get Mask working in a week 🫠🙃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants