tf.metrics.accuracy(),用法

格式:

accuracy, update_op = tf.metrics.accuracy(labels=x, predictions=y) 

 tf.metrics.accuracy返回两个值,accuracy为到上一个batch为止的准确度,update_op为更新本批次后的准确度。 

#官方文档
def accuracy(labels,
             predictions,
             weights=None,
             metrics_collections=None,
             updates_collections=None,
             name=None):

思路:

计算predictions匹配labels的情况。

该accuracy函数创建两个局部变量,total和count用于计算predictions匹配labels的情况。这个频率被最终返回为accuracy:total/count。

!!!!因为有局部变量,所以要初始化局部变量,sess.run(tf.local_variables_initializer())
 

例子看代码: 

注意更新过程是个迭代过程,下面例子每次匹配5个预测值和真实值,在第二次的时候,5个值全部不匹配,所以正确率,即第一次正确匹配个数 除以总数.

import numpy as np
import tensorflow as tf
 
x = tf.placeholder(tf.int32, [5])
y = tf.placeholder(tf.int32, [5])
acc, acc_op = tf.metrics.accuracy(labels=x, predictions=y)
 
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
sess.run(tf.local_variables_initializer())
 
v = sess.run([acc, acc_op], feed_dict={x: [1, 0, 0, 0, 0],
                                       y: [1, 0, 0, 0, 1]})
#总的5个(正确4)
print(v)   #[0.0, 0.8]
 
 
v = sess.run([acc, acc_op], feed_dict={x: [1, 1, 1, 1, 0],
                                       y: [0, 0, 0, 0, 1]})
#总的10个(正确4)                                   
print(v)    #[0.8, 0.4]
 
v = sess.run([acc, acc_op], feed_dict={x: [1, 1, 1, 1, 0],
                                       y: [0, 0, 0, 0, 1]})
#总的15个(正确4)           
print(v)    #[0.4, 0.26666668]
 

为了估计一连串的数据,该函数创建一个 update_op操作更新这些变量并返回accuracy。在内部,一个is_correct操作计算一个Tensor,当predictions和labels匹配时其中相应的元素为1.0,否则为0.0。然后update_op更新total和count的值。

如果weights是None,则权重默认为1.使用权重0来作为mask值。

参数:

labels:ground truth值,Tensor,其形状匹配 predictions。

predictions:预测值,任何形状的Tensor。

weights:可选,Tensor,其秩为0或与labels的秩相同,并且必须可广播到labels(即,所有维度必须1或者与相应                                 的labels维度相同)。

metrics_collections:accuracy应添加到的可选集合列表。

updates_collections:update_op应添加到的可选集合列表。

name:可选的,variable_scope名称。

返回:

accuracy:A Tensor,表示准确性,值total除以count。

update_op:适当增加total和count变量并且使其值匹配accuracy的操作

参考文献 :https://blog.csdn.net/lyb3b3b/article/details/83047148

猜你喜欢

转载自blog.csdn.net/qq_35290785/article/details/89254700