@@ -46,6 +46,40 @@ public void top_k_categorical_accuracy()
4646 Assert . AreEqual ( m . numpy ( ) , new [ ] { 1f , 1f } ) ;
4747 }
4848
49+ /// <summary>
50+ /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/Precision
51+ /// </summary>
52+ [ TestMethod ]
53+ public void Precision ( )
54+ {
55+ var y_true = np . array ( new [ ] { 0 , 1 , 1 , 1 } ) ;
56+ var y_pred = np . array ( new [ ] { 1 , 0 , 1 , 1 } ) ;
57+ var m = tf . keras . metrics . Precision ( ) ;
58+ m . update_state ( y_true , y_pred ) ;
59+ var r = m . result ( ) . numpy ( ) ;
60+ Assert . AreEqual ( r , 0.6666667f ) ;
61+
62+ m . reset_states ( ) ;
63+ var weights = np . array ( new [ ] { 0f , 0f , 1f , 0f } ) ;
64+ m . update_state ( y_true , y_pred , sample_weight : weights ) ;
65+ r = m . result ( ) . numpy ( ) ;
66+ Assert . AreEqual ( r , 1f ) ;
67+
68+ // With top_k=2, it will calculate precision over y_true[:2]
69+ // and y_pred[:2]
70+ m = tf . keras . metrics . Precision ( top_k : 2 ) ;
71+ m . update_state ( np . array ( new [ ] { 0 , 0 , 1 , 1 } ) , np . array ( new [ ] { 1 , 1 , 1 , 1 } ) ) ;
72+ r = m . result ( ) . numpy ( ) ;
73+ Assert . AreEqual ( r , 0f ) ;
74+
75+ // With top_k=4, it will calculate precision over y_true[:4]
76+ // and y_pred[:4]
77+ m = tf . keras . metrics . Precision ( top_k : 4 ) ;
78+ m . update_state ( np . array ( new [ ] { 0 , 0 , 1 , 1 } ) , np . array ( new [ ] { 1 , 1 , 1 , 1 } ) ) ;
79+ r = m . result ( ) . numpy ( ) ;
80+ Assert . AreEqual ( r , 0.5f ) ;
81+ }
82+
4983 /// <summary>
5084 /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/Recall
5185 /// </summary>
0 commit comments