首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maskrcnn : add_loss( )引发ValueError

Maskrcnn : add_loss( )引发ValueError
EN

Stack Overflow用户
提问于 2021-06-05 16:34:33
回答 1查看 194关注 0票数 1

我想通过Tensorflow使用Coco数据集2014重新训练MaskRCNN模型。

我在MaskRCNN中根据层的名称修剪了一些层,并想重新训练它。

我的情况是,在剪枝MaskRCNN之后,当我试图向剪枝模型添加损失时,

导致ValueError:由于缺少依赖关系,无法添加层。

我使用的代码是:

代码语言:javascript
复制
loss_names = [
        "rpn_class_loss",  "rpn_bbox_loss",
        "mrcnn_class_loss", "mrcnn_bbox_loss", "mrcnn_mask_loss"]

for name in loss_names:

layer = model_for_pruning.get_layer(name)
if layer.output in model_for_pruning.losses:
    continue

loss = (tf.reduce_mean(input_tensor=layer.output, keepdims=True)
       *config.LOSS_WEIGHTS.get(name, 1.))
model_for_pruning.add_loss(loss)

我得到的ValueError是这样的:

代码语言:javascript
复制
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-43-542261a0e37d> in <module>
      9     loss = (tf.reduce_mean(input_tensor=layer.output, keepdims=True)
     10            *config.LOSS_WEIGHTS.get(name, 1.))
---> 11     model_for_pruning.add_loss(loss)

~\.conda\envs\maskrcnn\lib\site-packages\tensorflow_core\python\keras\engine\base_layer.py in add_loss(self, losses, inputs)
   1079       for symbolic_loss in symbolic_losses:
   1080         if getattr(self, '_is_graph_network', False):
-> 1081           self._graph_network_add_loss(symbolic_loss)
   1082         else:
   1083           # Possible a loss was added in a Layer's `build`.

~\.conda\envs\maskrcnn\lib\site-packages\tensorflow_core\python\keras\engine\network.py in _graph_network_add_loss(self, symbolic_loss)
   1482     new_nodes.extend(add_loss_layer.inbound_nodes)
   1483     new_layers.append(add_loss_layer)
-> 1484     self._insert_layers(new_layers, new_nodes)
   1485 
   1486   def _graph_network_add_metric(self, value, aggregation, name):

~\.conda\envs\maskrcnn\lib\site-packages\tensorflow_core\python\keras\engine\network.py in _insert_layers(self, layers, relevant_nodes)
   1421       # are being relied on.
   1422       if i > 10000:
-> 1423         raise ValueError('Layers could not be added due to missing '
   1424                          'dependencies.')
   1425 

ValueError: Layers could not be added due to missing dependencies.

如果此错误与GPU内存大小有关,这些Coco数据集需要多少内存,是否有任何其他方法可以使用12 GB GPU内存大小进行训练。

谢谢你的建议。:D

EN

回答 1

Stack Overflow用户

发布于 2021-06-12 15:16:53

我不确定为什么会发生这种情况,但将主干改为ResNet50可能会解决问题。

或者你可以改变

代码语言:javascript
复制
if i > 10000:
  raise ValueError('Layers could not be added due to missing dependencies.')

代码语言:javascript
复制
if i > 10000000000:

在network.py文件中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67847807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档