TensorFlow函数:tf.metrics.recall_at_k
2018-10-17 11:10 更新
tf.metrics.recall_at_k函数
tf.metrics.recall_at_k(
labels,
predictions,
k,
class_id=None,
weights=None,
metrics_collections=None,
updates_collections=None,
name=None
)
定义在:tensorflow/python/ops/metrics_impl.py.
计算有关稀疏labels的predictions的recall@k.
如果class_id指定,我们通过仅考虑标签中class_id所在批次中的条目来计算recall,并计算它们中class_id在前k项predictions中的分数.如果class_id未指定,我们将计算recall以了解批次条目的标签中的一个类在前k项predictions中的频率.
sparse_recall_at_k创建两个局部变量,true_positive_at_<k>和false_negative_at_<k>,被用来计算recall_at_k频率.此频率最终返回为recall_at_<k>,这是一个幂等操作,将true_positive_at_<k>除以true_positive_at_<k>和false_negative_at_<k>的和.
为了估计数据流上的度量,该函数创建一个update_op操作来更新这些变量并返回recall_at_<k>.在内部,top_k操作计算Tensor以指示前k项predictions.设置应用于top_k和labels的操作通过weights计算加权的true positives和false negatives.然后update_op使用这些值递增true_positive_at_<k>和false_negative_at_<k>.
如果weights是None,则权重默认为1,使用权重0来屏蔽值.
参数:
- labels:int64 Tensor或SparseTensor,并且具有形状[D1,... DN,num_labels]或[D1,... DN],其中后者暗示num_labels = 1.N> = 1并且num_labels是关联预测的目标类的数量.通常,N = 1并且labels具有形状[batch_size,num_labels].[D1,... DN]必须匹配predictions.值应在[0,num_classes]范围内,其中num_classes是predictions的最后一个维度.超出此范围的值始终计入false_negative_at_<k>.
- predictions:浮动的Tensor,具有形状[D1,... DN,num_classes],其中N> = 1;通常,N = 1并且predictions具有形状[batch size, num_classes].最终维度包含每个类的logit值.[D1,... DN]必须匹配labels.
- k:整数,k代表@k metric.
- class_id:我们需要二进制度量的整数类ID.这应该在[0,num_classes]范围内,其中num_classes是predictions的最后一个维度.如果class_id超出此范围,则该方法返回NAN.
- weights:Tensor的秩为0或n-1,其中n是labels的秩.如果是后者,则必须是可广播的labels(即,所有维度必须为1或与相应的labels维度相同).
- metrics_collections:应添加值的集合的可选列表.
- updates_collections:应添加更新的集合的可选列表.
- name:新更新操作的名称,以及其他从属操作的命名空间.
返回:
- recall:标量float64 Tensor,其值为值true_positives除以true_positives和false_negatives的和.
- update_op:适当增加true_positives和false_negatives变量的操作,其值与recall匹配.
可能引发的异常:
- ValueError:如果weights不是None,并且它的形状不匹配predictions,或者如果metrics_collections或updates_collections中任意一个不是一个列表或元组.
- RuntimeError:如果启用了急切执行.