@@ -14,6 +14,26 @@ namespace TensorFlowNET.Keras.UnitTest;
1414[ TestClass ]
1515public class MetricsTest : EagerModeTestBase
1616{
17+ /// <summary>
18+ /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/Accuracy
19+ /// </summary>
20+ [ TestMethod ]
21+ public void Accuracy ( )
22+ {
23+ var y_true = np . array ( new [ , ] { { 1 } , { 2 } , { 3 } , { 4 } } ) ;
24+ var y_pred = np . array ( new [ , ] { { 0f } , { 2f } , { 3f } , { 4f } } ) ;
25+ var m = tf . keras . metrics . Accuracy ( ) ;
26+ m . update_state ( y_true , y_pred ) ;
27+ var r = m . result ( ) . numpy ( ) ;
28+ Assert . AreEqual ( r , 0.75f ) ;
29+
30+ m . reset_states ( ) ;
31+ var weights = np . array ( new [ ] { 1f , 1f , 0f , 0f } ) ;
32+ m . update_state ( y_true , y_pred , sample_weight : weights ) ;
33+ r = m . result ( ) . numpy ( ) ;
34+ Assert . AreEqual ( r , 0.5f ) ;
35+ }
36+
1737 /// <summary>
1838 /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/BinaryAccuracy
1939 /// </summary>
@@ -23,14 +43,14 @@ public void BinaryAccuracy()
2343 var y_true = np . array ( new [ , ] { { 1 } , { 1 } , { 0 } , { 0 } } ) ;
2444 var y_pred = np . array ( new [ , ] { { 0.98f } , { 1f } , { 0f } , { 0.6f } } ) ;
2545 var m = tf . keras . metrics . BinaryAccuracy ( ) ;
26- /* m.update_state(y_true, y_pred);
46+ m . update_state ( y_true , y_pred ) ;
2747 var r = m . result ( ) . numpy ( ) ;
2848 Assert . AreEqual ( r , 0.75f ) ;
2949
30- m.reset_states();*/
50+ m . reset_states ( ) ;
3151 var weights = np . array ( new [ ] { 1f , 0f , 0f , 1f } ) ;
3252 m . update_state ( y_true , y_pred , sample_weight : weights ) ;
33- var r = m . result ( ) . numpy ( ) ;
53+ r = m . result ( ) . numpy ( ) ;
3454 Assert . AreEqual ( r , 0.5f ) ;
3555 }
3656
@@ -74,6 +94,26 @@ public void CategoricalCrossentropy()
7494 Assert . AreEqual ( r , 1.6271976f ) ;
7595 }
7696
97+ /// <summary>
98+ /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/CosineSimilarity
99+ /// </summary>
100+ [ TestMethod ]
101+ public void CosineSimilarity ( )
102+ {
103+ var y_true = np . array ( new [ , ] { { 0 , 1 } , { 1 , 1 } } ) ;
104+ var y_pred = np . array ( new [ , ] { { 1f , 0f } , { 1f , 1f } } ) ;
105+ var m = tf . keras . metrics . CosineSimilarity ( axis : 1 ) ;
106+ m . update_state ( y_true , y_pred ) ;
107+ var r = m . result ( ) . numpy ( ) ;
108+ Assert . AreEqual ( r , 0.49999997f ) ;
109+
110+ m . reset_states ( ) ;
111+ var weights = np . array ( new [ ] { 0.3f , 0.7f } ) ;
112+ m . update_state ( y_true , y_pred , sample_weight : weights ) ;
113+ r = m . result ( ) . numpy ( ) ;
114+ Assert . AreEqual ( r , 0.6999999f ) ;
115+ }
116+
77117 /// <summary>
78118 /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/TopKCategoricalAccuracy
79119 /// </summary>
0 commit comments