Keras ValueError:找到两个同名的指标:recall

Keras ValueError:找到两个同名的指标:recall,keras,Keras,我正在训练一个检测模型,其中训练和测试数据是3D NumPy数组。当启动列车时,该模型发现了此类错误。代码链接如下所示 回溯(最近一次呼叫最后一次): 文件“/content/SpineFinder master/train\u detection\u model.py”,第25行,在 洗牌=真) 文件“/content/SpineFinder master/learning_functions/perform_learning.py”,第57行,在perform_learning中 回调

我正在训练一个检测模型,其中训练和测试数据是3D NumPy数组。当启动列车时,该模型发现了此类错误。代码链接如下所示

回溯(最近一次呼叫最后一次): 文件“/content/SpineFinder master/train\u detection\u model.py”,第25行,在 洗牌=真)

文件“/content/SpineFinder master/learning_functions/perform_learning.py”,第57行,在perform_learning中 回调=[checkpoint,tensorboard])

文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/util/deprecation.py”,第324行,在new_func中 返回函数(*args,**kwargs)

fit_generator中的文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/keras/engine/training.py”,第1479行 初始_历元=初始_历元)

文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py”,第66行,在方法包装中 返回方法(self、*args、**kwargs)

文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/keras/engine/training.py”,第848行 tmp_logs=训练函数(迭代器)

文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/eager/def_function.py”,第580行,在调用中 结果=自身调用(*args,**kwds)

文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/eager/def_function.py”,第627行,在调用中 self.\u初始化(参数、KWD、添加初始值设定项到=初始值设定项)

文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/eager/def_function.py”,第506行,在 *args,**科威特第纳尔)

文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/eager/function.py”,第2446行,位于“获取”、“具体”、“函数”、“内部”和“垃圾”收集中 图函数,自我,可能定义函数(args,kwargs)

文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py”,第2777行,在函数定义中 graph\u function=self.\u create\u graph\u function(args,kwargs)

文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/eager/function.py”,第2667行,在“创建图形”函数中 按值捕获=自身。_按值捕获)

文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_-graph.py”,第981行,在func_-graph_中,从_-py_-func开始 func_outputs=python_func(*func_args,**func_kwargs)

文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py”,第441行,包装为fn 返回弱包装的(包装的(*args,**kwds)

包装器中的文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_-graph.py”,第968行 将e.ag\u错误\u元数据引发到\u异常(e)

ValueError:在用户代码中:

/usr/local/lib/python3.6/dist包/tensorflow/python/keras/engine/training.py:571 train_函数* 输出=self.distribution\u strategy.run( /usr/local/lib/python3.6/dist包/tensorflow/python/distribute/distribute_lib.py:951运行** 返回self.\u扩展。为每个\u副本调用\u(fn,args=args,kwargs=kwargs)


ValueError:找到两个同名指标:recall

错误源于detection.py中的以下内容:

    recall_background = km.binary_recall(label=0)
    recall_vertebrae = km.binary_recall(label=1)
根据[1]和[2],km.binary_recall()实例化了keras.metrics.recall()类。但是,如果没有
名称
kwarg,两行都使用相同的名称
recall
。因此,为了避免这种情况,我的理解是,您必须像这样指定
名称
kwarg:

    recall_background = km.binary_recall(name="recall_background", label=0)
    recall_vertebrae = km.binary_recall(name="recall_vertebrae", label=1)
[1] -


[2] -

请包含更多代码,因为这些变量所代表的内容很少。您使用的是哪一版本的keras?keras版本-2.4.3
    recall_background = km.binary_recall(label=0)
    recall_vertebrae = km.binary_recall(label=1)
    recall_background = km.binary_recall(name="recall_background", label=0)
    recall_vertebrae = km.binary_recall(name="recall_vertebrae", label=1)