1、tf.keras.metrics.Accuracy函数说明:
计算预测与真实值的准确度。
用法:
tf.keras.metrics.Accuracy
(
name='accuracy',
dtype=None
)
例如,如果y_true为[1、2、3、4],而y_pred为[0、2、3、4],则精度为3/4或 .75 。如果将权重指定为 [1、1、0、0] ,则精度将为1/2或 .5 ,权重0是用来屏蔽的。
update_state
(
y_true,
y_pred,
sample_weight=None
)
示例:
import tensorflow as tf
m = tf.keras.metrics.Accuracy()
m.update_state([1, 2, 3, 4], [0, 2, 3, 4])
# Out[4]: <tf.Variable 'UnreadVariable' shape=() dtype=float32, numpy=4.0>
m.result().numpy()
# Out[5]: 0.75
m.reset_states()
m.update_state([1, 2, 3, 4], [0, 2, 3, 4], sample_weight = [1, 1, 0, 0])
# Out[7]: <tf.Variable 'UnreadVariable' shape=() dtype=float32, numpy=2.0>
m.result().numpy()
# Out[8]: 0.5
2、tf.keras.metrics.Mean函数说明
计算给定值的(加权)平均值。
用法:
tf.keras.metrics.Mean
(
name='mean',
dtype=None
)
例如,如果值为[1、3、5、7],则平均值为4。如果权重指定为[1、1、0、0],则平均值为2。
示例:
m = tf.keras.metrics.Mean()
m.update_state([1, 3, 5, 7])
# Out[10]: <tf.Variable 'UnreadVariable' shape=() dtype=float32, numpy=4.0>
m.result().numpy()
# Out[11]: 4.0
m.reset_states()
m.update_state([1, 3, 5, 7], sample_weight=[1, 1, 0, 0])
# Out[13]: <tf.Variable 'UnreadVariable' shape=() dtype=float32, numpy=2.0>
m.result().numpy()
# Out[14]: 2.0
3、使用步骤总结
用法的流程:
1、 新建一个metric
2、 更新数据update_state
3、 取出数据result().numpy()
4、 重置清零数据reset_states
步骤1,新建一个meter
acc_meter = metrics.Accuracy() # 新建一个准确度的meter
loss_meter = metrics.mean() # 求平均值
步骤2,向meter中添加数据
loss_meter.update_state(loss)
acc_meter.update_state(y_true, y_pred)
注: 在acc_meter.update_state(y, pred) 中添加的不是一个实时的Accuracy,它是一个专门计算Accuracy 的meter,只需要传递真实的y和预测的y(pred),它会自动的计算Accuracy,并保存。
步骤3,取出数据
print(loss_meter.result().numpy())
...
print('Evaluate Acc:', total_correct/total, acc_meter.result().numpy())
在loss_meter.result() 会得到一个tensor的数据,再使用.numpy将它转化为numpy的数据
步骤4,清除缓存meter
loss_meter.reset_states()
...
acc_meter.reset_states()