Mask R-CNN:如何推断 Lambda 输出的形状?

问题描述 投票:0回答:1

我正在探索以下Mask R-CNN的示例代码: https://github.com/matterport/Mask_RCNN/tree/master/samples

但是,当我运行

demo.ipynb
文件时,下面的代码返回了一个错误,我不知道如何修复。

model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=config)

错误内容如下。

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_3553\>',)
• kwargs={'mask': 'None'}

看来

fpn_classifier_graph
函数导致了错误,因为它无法识别Lambda的输出,需要指定正确的output_shape。

但是,我不知道如何修改代码...

ChatGPT 建议修改 Lambda 以显式指定 output_shape,如下所示,但这不起作用......

shared = KL.Lambda(lambda x: K.squeeze(K.squeeze(x, 3), 2),
                   name="pool_squeeze",
                   output_shape=lambda s: (s[0], s[1], s[3]))(x)
python tensorflow keras deep-learning mask-rcnn
1个回答
0
投票

有同样的问题。将 keras 回滚到 2.9.0,将 Tensorflow 回滚到 2.9.1 为我解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.