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

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.""" 

16 

17# isort: off 

18from tensorflow.python.util.tf_export import keras_export 

19 

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 

31 

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 

35 

36from keras.src.metrics.py_metric import PyMetric 

37 

38# Individual metric classes 

39 

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 

47 

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 

54 

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 

61 

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 

67 

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 

78 

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 

85 

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 

99 

100# F-Scores 

101from keras.src.metrics.f_score_metrics import FBetaScore 

102from keras.src.metrics.f_score_metrics import F1Score 

103 

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 

110 

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 

115 

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 

119 

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 

129 

130 

131@keras_export("keras.metrics.serialize") 

132def serialize(metric, use_legacy_format=False): 

133 """Serializes metric function or `Metric` instance. 

134 

135 Args: 

136 metric: A Keras `Metric` instance or a metric function. 

137 

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) 

144 

145 

146@keras_export("keras.metrics.deserialize") 

147def deserialize(config, custom_objects=None, use_legacy_format=False): 

148 """Deserializes a serialized metric class/function instance. 

149 

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. 

154 

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 ) 

171 

172 

173@keras_export("keras.metrics.get") 

174def get(identifier): 

175 """Retrieves a Keras metric as a `function`/`Metric` class instance. 

176 

177 The `identifier` may be the string name of a metric function or class. 

178 

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'> 

185 

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 

189 

190 >>> identifier = {"class_name": "CategoricalCrossentropy", 

191 ... "config": {"from_logits": True}} 

192 >>> metric = tf.keras.metrics.get(identifier) 

193 >>> type(metric) 

194 <class '...metrics.CategoricalCrossentropy'> 

195 

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 

200 

201 Returns: 

202 A Keras metric as a `function`/ `Metric` class instance. 

203 

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}") 

216