@@ -74,6 +74,26 @@ public void CategoricalAccuracy()
7474 Assert . AreEqual ( r , 0.3f ) ;
7575 }
7676
77+ /// <summary>
78+ /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/SparseCategoricalAccuracy
79+ /// </summary>
80+ [ TestMethod ]
81+ public void SparseCategoricalAccuracy ( )
82+ {
83+ var y_true = np . array ( new [ ] { 2 , 1 } ) ;
84+ var y_pred = np . array ( new [ , ] { { 0.1f , 0.6f , 0.3f } , { 0.05f , 0.95f , 0f } } ) ;
85+ var m = tf . keras . metrics . SparseCategoricalAccuracy ( ) ;
86+ m . update_state ( y_true , y_pred ) ;
87+ var r = m . result ( ) . numpy ( ) ;
88+ Assert . AreEqual ( r , 0.5f ) ;
89+
90+ m . reset_states ( ) ;
91+ var weights = np . array ( new [ ] { 0.7f , 0.3f } ) ;
92+ m . update_state ( y_true , y_pred , sample_weight : weights ) ;
93+ r = m . result ( ) . numpy ( ) ;
94+ Assert . AreEqual ( r , 0.3f ) ;
95+ }
96+
7797 /// <summary>
7898 /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/CategoricalCrossentropy
7999 /// </summary>
@@ -94,6 +114,20 @@ public void CategoricalCrossentropy()
94114 Assert . AreEqual ( r , 1.6271976f ) ;
95115 }
96116
117+ /// <summary>
118+ /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/SparseCategoricalCrossentropy
119+ /// </summary>
120+ [ TestMethod ]
121+ public void SparseCategoricalCrossentropy ( )
122+ {
123+ var y_true = np . array ( new [ ] { 1 , 2 } ) ;
124+ var y_pred = np . array ( new [ , ] { { 0.05f , 0.95f , 0f } , { 0.1f , 0.8f , 0.1f } } ) ;
125+ var m = tf . keras . metrics . SparseCategoricalCrossentropy ( ) ;
126+ m . update_state ( y_true , y_pred ) ;
127+ var r = m . result ( ) . numpy ( ) ;
128+ Assert . AreEqual ( r , 1.1769392f ) ;
129+ }
130+
97131 /// <summary>
98132 /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/CosineSimilarity
99133 /// </summary>
@@ -207,6 +241,26 @@ public void TopKCategoricalAccuracy()
207241 Assert . AreEqual ( r , 0.3f ) ;
208242 }
209243
244+ /// <summary>
245+ /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/SparseTopKCategoricalAccuracy
246+ /// </summary>
247+ [ TestMethod ]
248+ public void SparseTopKCategoricalAccuracy ( )
249+ {
250+ var y_true = np . array ( new [ ] { 2 , 1 } ) ;
251+ var y_pred = np . array ( new [ , ] { { 0.1f , 0.9f , 0.8f } , { 0.05f , 0.95f , 0f } } ) ;
252+ var m = tf . keras . metrics . SparseTopKCategoricalAccuracy ( k : 1 ) ;
253+ m . update_state ( y_true , y_pred ) ;
254+ var r = m . result ( ) . numpy ( ) ;
255+ Assert . AreEqual ( r , 0.5f ) ;
256+
257+ m . reset_states ( ) ;
258+ var weights = np . array ( new [ ] { 0.7f , 0.3f } ) ;
259+ m . update_state ( y_true , y_pred , sample_weight : weights ) ;
260+ r = m . result ( ) . numpy ( ) ;
261+ Assert . AreEqual ( r , 0.3f ) ;
262+ }
263+
210264 /// <summary>
211265 /// https://www.tensorflow.org/api_docs/python/tf/keras/metrics/top_k_categorical_accuracy
212266 /// </summary>
0 commit comments