Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/keras/src/metrics/__init__.py: 87%
106 statements
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-03 07:57 +0000
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-03 07:57 +0000
1# Copyright 2015 The TensorFlow Authors. All Rights Reserved.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14# ==============================================================================
15"""All Keras metrics."""
17# isort: off
18from tensorflow.python.util.tf_export import keras_export
20# Base classes and utilities
21from keras.src.metrics.base_metric import Mean
22from keras.src.metrics.base_metric import MeanMetricWrapper
23from keras.src.metrics.base_metric import MeanTensor
24from keras.src.metrics.base_metric import Metric
25from keras.src.metrics.base_metric import Reduce
26from keras.src.metrics.base_metric import Sum
27from keras.src.metrics.base_metric import SumOverBatchSize
28from keras.src.metrics.base_metric import SumOverBatchSizeMetricWrapper
29from keras.src.metrics.base_metric import clone_metric
30from keras.src.metrics.base_metric import clone_metrics
32from keras.src.saving.legacy import serialization as legacy_serialization
33from keras.src.saving.serialization_lib import deserialize_keras_object
34from keras.src.saving.serialization_lib import serialize_keras_object
36from keras.src.metrics.py_metric import PyMetric
38# Individual metric classes
40# Accuracy metrics
41from keras.src.metrics.accuracy_metrics import Accuracy
42from keras.src.metrics.accuracy_metrics import BinaryAccuracy
43from keras.src.metrics.accuracy_metrics import CategoricalAccuracy
44from keras.src.metrics.accuracy_metrics import SparseCategoricalAccuracy
45from keras.src.metrics.accuracy_metrics import SparseTopKCategoricalAccuracy
46from keras.src.metrics.accuracy_metrics import TopKCategoricalAccuracy
48from keras.src.metrics.accuracy_metrics import accuracy
49from keras.src.metrics.accuracy_metrics import binary_accuracy
50from keras.src.metrics.accuracy_metrics import categorical_accuracy
51from keras.src.metrics.accuracy_metrics import sparse_categorical_accuracy
52from keras.src.metrics.accuracy_metrics import sparse_top_k_categorical_accuracy
53from keras.src.metrics.accuracy_metrics import top_k_categorical_accuracy
55# Probabilistic metrics
56from keras.src.metrics.probabilistic_metrics import BinaryCrossentropy
57from keras.src.metrics.probabilistic_metrics import CategoricalCrossentropy
58from keras.src.metrics.probabilistic_metrics import KLDivergence
59from keras.src.metrics.probabilistic_metrics import Poisson
60from keras.src.metrics.probabilistic_metrics import SparseCategoricalCrossentropy
62from keras.src.metrics.probabilistic_metrics import binary_crossentropy
63from keras.src.metrics.probabilistic_metrics import categorical_crossentropy
64from keras.src.metrics.probabilistic_metrics import poisson
65from keras.src.metrics.probabilistic_metrics import kullback_leibler_divergence
66from keras.src.metrics.probabilistic_metrics import sparse_categorical_crossentropy
68# Regression metrics
69from keras.src.metrics.regression_metrics import CosineSimilarity
70from keras.src.metrics.regression_metrics import LogCoshError
71from keras.src.metrics.regression_metrics import MeanAbsoluteError
72from keras.src.metrics.regression_metrics import MeanAbsolutePercentageError
73from keras.src.metrics.regression_metrics import MeanRelativeError
74from keras.src.metrics.regression_metrics import MeanSquaredError
75from keras.src.metrics.regression_metrics import MeanSquaredLogarithmicError
76from keras.src.metrics.regression_metrics import RootMeanSquaredError
77from keras.src.metrics.regression_metrics import R2Score
79from keras.src.metrics.regression_metrics import cosine_similarity
80from keras.src.metrics.regression_metrics import logcosh
81from keras.src.metrics.regression_metrics import mean_absolute_error
82from keras.src.metrics.regression_metrics import mean_absolute_percentage_error
83from keras.src.metrics.regression_metrics import mean_squared_error
84from keras.src.metrics.regression_metrics import mean_squared_logarithmic_error
86# Confusion metrics
87from keras.src.metrics.confusion_metrics import AUC
88from keras.src.metrics.confusion_metrics import FalseNegatives
89from keras.src.metrics.confusion_metrics import FalsePositives
90from keras.src.metrics.confusion_metrics import Precision
91from keras.src.metrics.confusion_metrics import PrecisionAtRecall
92from keras.src.metrics.confusion_metrics import Recall
93from keras.src.metrics.confusion_metrics import RecallAtPrecision
94from keras.src.metrics.confusion_metrics import SensitivityAtSpecificity
95from keras.src.metrics.confusion_metrics import SensitivitySpecificityBase
96from keras.src.metrics.confusion_metrics import SpecificityAtSensitivity
97from keras.src.metrics.confusion_metrics import TrueNegatives
98from keras.src.metrics.confusion_metrics import TruePositives
100# F-Scores
101from keras.src.metrics.f_score_metrics import FBetaScore
102from keras.src.metrics.f_score_metrics import F1Score
104# IoU metrics
105from keras.src.metrics.iou_metrics import BinaryIoU
106from keras.src.metrics.iou_metrics import IoU
107from keras.src.metrics.iou_metrics import MeanIoU
108from keras.src.metrics.iou_metrics import OneHotIoU
109from keras.src.metrics.iou_metrics import OneHotMeanIoU
111# Hinge metrics
112from keras.src.metrics.hinge_metrics import CategoricalHinge
113from keras.src.metrics.hinge_metrics import Hinge
114from keras.src.metrics.hinge_metrics import SquaredHinge
116from keras.src.metrics.hinge_metrics import categorical_hinge
117from keras.src.metrics.hinge_metrics import squared_hinge
118from keras.src.metrics.hinge_metrics import hinge
120# Aliases
121acc = ACC = accuracy
122bce = BCE = binary_crossentropy
123mse = MSE = mean_squared_error
124mae = MAE = mean_absolute_error
125mape = MAPE = mean_absolute_percentage_error
126msle = MSLE = mean_squared_logarithmic_error
127log_cosh = logcosh
128cosine_proximity = cosine_similarity
131@keras_export("keras.metrics.serialize")
132def serialize(metric, use_legacy_format=False):
133 """Serializes metric function or `Metric` instance.
135 Args:
136 metric: A Keras `Metric` instance or a metric function.
138 Returns:
139 Metric configuration dictionary.
140 """
141 if use_legacy_format:
142 return legacy_serialization.serialize_keras_object(metric)
143 return serialize_keras_object(metric)
146@keras_export("keras.metrics.deserialize")
147def deserialize(config, custom_objects=None, use_legacy_format=False):
148 """Deserializes a serialized metric class/function instance.
150 Args:
151 config: Metric configuration.
152 custom_objects: Optional dictionary mapping names (strings) to custom
153 objects (classes and functions) to be considered during deserialization.
155 Returns:
156 A Keras `Metric` instance or a metric function.
157 """
158 if use_legacy_format:
159 return legacy_serialization.deserialize_keras_object(
160 config,
161 module_objects=globals(),
162 custom_objects=custom_objects,
163 printable_module_name="metric function",
164 )
165 return deserialize_keras_object(
166 config,
167 module_objects=globals(),
168 custom_objects=custom_objects,
169 printable_module_name="metric function",
170 )
173@keras_export("keras.metrics.get")
174def get(identifier):
175 """Retrieves a Keras metric as a `function`/`Metric` class instance.
177 The `identifier` may be the string name of a metric function or class.
179 >>> metric = tf.keras.metrics.get("categorical_crossentropy")
180 >>> type(metric)
181 <class 'function'>
182 >>> metric = tf.keras.metrics.get("CategoricalCrossentropy")
183 >>> type(metric)
184 <class '...metrics.CategoricalCrossentropy'>
186 You can also specify `config` of the metric to this function by passing dict
187 containing `class_name` and `config` as an identifier. Also note that the
188 `class_name` must map to a `Metric` class
190 >>> identifier = {"class_name": "CategoricalCrossentropy",
191 ... "config": {"from_logits": True}}
192 >>> metric = tf.keras.metrics.get(identifier)
193 >>> type(metric)
194 <class '...metrics.CategoricalCrossentropy'>
196 Args:
197 identifier: A metric identifier. One of None or string name of a metric
198 function/class or metric configuration dictionary or a metric function
199 or a metric class instance
201 Returns:
202 A Keras metric as a `function`/ `Metric` class instance.
204 Raises:
205 ValueError: If `identifier` cannot be interpreted.
206 """
207 if isinstance(identifier, dict):
208 use_legacy_format = "module" not in identifier
209 return deserialize(identifier, use_legacy_format=use_legacy_format)
210 elif isinstance(identifier, str):
211 return deserialize(str(identifier))
212 elif callable(identifier):
213 return identifier
214 else:
215 raise ValueError(f"Could not interpret metric identifier: {identifier}")