我想通过Tensorflow使用Coco数据集2014重新训练MaskRCNN模型。
我在MaskRCNN中根据层的名称修剪了一些层,并想重新训练它。
我的情况是,在剪枝MaskRCNN之后,当我试图向剪枝模型添加损失时,
导致ValueError:由于缺少依赖关系,无法添加层。
我使用的代码是:
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数据集需要多少内存,是否有任何其他方法可以使用12 GB GPU内存大小进行训练。
谢谢你的建议。:D
发布于 2021-06-12 15:16:53
我不确定为什么会发生这种情况,但将主干改为ResNet50可能会解决问题。
或者你可以改变
if i > 10000:
raise ValueError('Layers could not be added due to missing dependencies.')至
if i > 10000000000:在network.py文件中
https://stackoverflow.com/questions/67847807
复制相似问题