BYF00 2024-04-12 14:23 采纳率: 0%
浏览 12

mask-rcnn报错:ValueError: Cannot iterate over a shape with unknown rank.

博主按照你的教程安装maskrcnn换了很多keras和tensorflow-gpu的版本还是报这个错:
请教下博主这个怎么解决呢

Starting at epoch 0. LR=1e-05

Checkpoint Path: logs
Traceback (most recent call last):
  File "train.py", line 126, in <module>
    loss=[None] * len(model.outputs)
  File "D:\DeepLearing\DevelopTools\Anaconda3\envs\Mask-Rcnn-Bubbling\lib\site-packages\keras\backend\tensorflow_backend.py", line 75, in symbolic_fn_wrapper
    return func(*args, **kwargs)
  File "D:\DeepLearing\DevelopTools\Anaconda3\envs\Mask-Rcnn-Bubbling\lib\site-packages\keras\engine\training.py", line 211, in compile
    self._cache_output_metric_attributes(metrics, weighted_metrics)
  File "D:\DeepLearing\DevelopTools\Anaconda3\envs\Mask-Rcnn-Bubbling\lib\site-packages\keras\engine\training.py", line 736, in _cache_output_metric_attributes
    output_shapes.append(list(output.shape))
  File "D:\DeepLearing\DevelopTools\Anaconda3\envs\Mask-Rcnn-Bubbling\lib\site-packages\tensorflow_core\python\framework\tensor_shape.py", line 840, in __iter__
    raise ValueError("Cannot iterate over a shape with unknown rank.")
ValueError: Cannot iterate over a shape with unknown rank.

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-12 14:23
    关注

    引自免费微信小程序:皆我百晓生

    这个错误通常发生在尝试迭代一个TensorFlow形状对象时,但形状的秩(rank)未知。在Keras中,output.shape返回的是一个张量的形状,如果形状的秩不确定,就会抛出这个ValueError

    为了解决这个问题,你需要检查model.outputs中的每个输出是否都有确定的秩。Mask R-CNN的输出可能包括不同类型的张量,比如类别得分、边框坐标和掩码,其中一些可能有固定秩,而另一些可能是动态大小的。

    首先,确认model.outputs中的每个元素是否都有确定的秩。你可以遍历输出并打印每个输出的秩,看看是否有任何异常:

    import tensorflow as tf
    
    # 假设model.outputs是一个列表
    for i, output in enumerate(model.outputs):
        try:
            rank = len(output.shape)
            print(f"Output {i}: Rank = {rank}")
        except ValueError:
            print(f"Output {i} has unknown rank")
    

    如果发现某个输出确实没有秩,可能是由于数据输入的问题或者是模型结构设置不正确。在Mask R-CNN中,这可能是因为动态大小的池化层或某些层导致的。你可以检查以下几点:

    1. 数据预处理:确保你在训练数据上应用了正确的尺寸和填充,以便所有输入都能得到确定的形状。
    2. 模型构建:确认模型的输出层是否设置了正确的尺寸参数,特别是对于可变大小的输出,如RPN或RoIAlign。
    3. 数据增强:某些数据增强操作(如random_crop)可能会导致输出形状的不确定性,考虑禁用它们,或者确保它们不会改变输入的固定维度。

    如果问题仍然存在,你可能需要查看官方Mask R-CNN的源代码或者GitHub issue来寻找类似问题的解决方案,或者联系Mask R-CNN库的维护者获取帮助。确保使用的库版本是最新的,并且与你的TensorFlow和Keras版本兼容。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月12日

悬赏问题

  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊