如何摆脱_N代表Keras指标名称?

时间:2019-07-19 22:34:51

标签: tensorflow deep-learning metrics tf.keras

我正在使用“ tensorflow” keras。即。我做到了:

from tensorflow import keras
from tensorflow.keras import layers

不确定与TF作为后端的Keras是否不同。我使用的是TF 1.14.0,并在Google colab上运行。

问题在于,每次我重新创建模型(或重新编译)时,_N都会附加到指标上。您可以在培训期间在打印输出中看到此内容,也可以将其作为history.history的键。

Epoch 1/100
32206/32206 [==============================] - 4s 138us/sample - loss: 0.8918 - precision_4: 0.6396 - recall_4: 0.4613 - val_loss: 5.5533 - val_precision_4: 0.0323 - val_recall_4: 0.0492
Epoch 2/100

我不确定这对于Keras正常工作是否重要,但是当我尝试访问历史记录时,这些名称带来了不便。我可以编写更多代码来解析它们,但我想知道我是否只能首先执行名称。通常,当我重新实例化模型(或从功能性API重新创建)时,我不打算保留旧版本(我只是将其覆盖为“模型”)。因此,我只是不确定那些“ _N”东西是否比名称更重要。 Keras会以某种方式在内部使用它们吗?这样一来,我可以更好地使用这些名称,并在以后需要访问它们时正确解析它们。

2 个答案:

答案 0 :(得分:0)

使用:

keras.metrics.Precision(name='precision')
keras.metrics.Recall(name='recall')

在指定指标时,它会沿用您提供的名称,在打印输出中以及在history.history中

到目前为止,我还没有发现任何麻烦。因此,这是目前为止的解决方案,除非另行证明。

答案 1 :(得分:0)

我还发现了另一个:

tf.keras.backend.clear_session()

我注意到默认的图层名称是从干净的石板开始的。我怀疑这也应该发生在那些_N度量标准的东西上,尽管自从我找到解决方案以来就没有尝试过(使用显式命名)。