View source on GitHub |
Calculates how often predictions
matches labels
.
tf.compat.v1.metrics.accuracy(
labels,
predictions,
weights=None,
metrics_collections=None,
updates_collections=None,
name=None
)
Migrate to TF2
tf.compat.v1.metrics.accuracy
is not compatible with eager
execution or tf.function
.
Please use tf.keras.metrics.Accuracy
instead for TF2 migration. After
instantiating a tf.keras.metrics.Accuracy
object, you can first call the
update_state()
method to record the prediction/labels, and then call the
result()
method to get the accuracy eagerly. You can also attach it to a
Keras model when calling the compile
method. Please refer to this
guide
for more details.
Structural Mapping to Native TF2
Before:
accuracy, update_op = tf.compat.v1.metrics.accuracy(
labels=labels,
predictions=predictions,
weights=weights,
metrics_collections=metrics_collections,
update_collections=update_collections,
name=name)
After:
m = tf.keras.metrics.Accuracy(
name=name,
dtype=None)
m.update_state(
y_true=labels,
y_pred=predictions,
sample_weight=weights)
accuracy = m.result()
How to Map Arguments
TF1 Arg Name | TF2 Arg Name | Note |
---|---|---|
label |
y_true |
In update_state() method |
predictions |
y_true |
In update_state() method |
weights |
sample_weight |
In update_state() method |
metrics_collections
|
Not supported | Metrics should be tracked explicitly or with Keras APIs, for example, add_metric, instead of via collections |
updates_collections |
Not supported | - |
name |
name |
In constructor |
Before & After Usage Example
Before:
g = tf.Graph()
with g.as_default():
logits = [1, 2, 3]
labels = [0, 2, 3]
acc, acc_op = tf.compat.v1.metrics.accuracy(logits, labels)
global_init = tf.compat.v1.global_variables_initializer()
local_init = tf.compat.v1.local_variables_initializer()
sess = tf.compat.v1.Session(graph=g)
sess.run([global_init, local_init])
print(sess.run([acc, acc_op]))
[0.0, 0.66667]
After:
m = tf.keras.metrics.Accuracy()
m.update_state([1, 2, 3], [0, 2, 3])
m.result().numpy()
0.66667
# Used within Keras model
model.compile(optimizer='sgd',
loss='mse',
metrics=[tf.keras.metrics.Accuracy()])
Description
The accuracy
function creates two local variables, total
and
count
that are used to compute the frequency with which predictions
matches labels
. This frequency is ultimately returned as accuracy
: an
idempotent operation that simply divides total
by count
.
For estimation of the metric over a stream of data, the function creates an
update_op
operation that updates these variables and returns the accuracy
.
Internally, an is_correct
operation computes a Tensor
with elements 1.0
where the corresponding elements of predictions
and labels
match and 0.0
otherwise. Then update_op
increments total
with the reduced sum of the
product of weights
and is_correct
, and it increments count
with the
reduced sum of weights
.
If weights
is None
, weights default to 1. Use weights of 0 to mask values.