【问题标题】:Maskrcnn : add_loss( ) raises ValueErrorMaskrcnn : add_loss() 引发 ValueError
【发布时间】:2021-08-23 03:10:24
【问题描述】:

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

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

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

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

我使用的代码是这样的:

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:

---------------------------------------------------------------------------
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 Dataset 需要多少内存,还有其他方法可以用 12 GB GPU 内存大小进行训练。

感谢您的建议。 :D

【问题讨论】:

  • 这个问题你解决了吗?
  • 是的,我刚换了24GB内存的GPU

标签: python python-3.x tensorflow keras deep-learning


【解决方案1】:

我不确定为什么会这样,但是将主干更改为 ResNet50 可能会解决问题。

或者你可以改变

if i > 10000:
  raise ValueError('Layers could not be added due to missing dependencies.')

if i > 10000000000:

在network.py文件中

【讨论】:

    猜你喜欢
    • 2019-07-31
    • 2018-05-21
    • 2011-05-22
    • 2019-07-11
    • 1970-01-01
    • 2021-01-18
    • 2018-12-07
    • 2021-09-25
    • 1970-01-01
    相关资源
    最近更新 更多