1818#include < regex>
1919#include < thread>
2020#include < unordered_map>
21+ #include < valarray>
2122#include < vector>
2223
2324#if defined(_MSC_VER)
@@ -1301,7 +1302,7 @@ static bool show_statistics(const common_params & params) {
13011302 std::map<int , layer_stats> ls;
13021303
13031304 LOG_INF (" \n Computing tensor statistics for %s (%d tensors)\n " , params.in_files [0 ].c_str (), static_cast <int >(ts.size ()));
1304- LOG_INF (" \n %6s\t %18s\t %13s\t %8s\t %8s\t %7s\t %15s\t %13s\t %12s \t %s \t %5s\t %10s\n " ,
1305+ LOG_INF (" \n %6s\t %18s\t %13s\t %8s\t %8s\t %7s\t %15s\t %13s\t %11s \t %8s \t %5s\t %10s\n " ,
13051306 " Layer" ,
13061307 " Tensor" ,
13071308 legacy_mode ? " Σ(Act²)" : " L₂ Norm" ,
@@ -1310,8 +1311,8 @@ static bool show_statistics(const common_params & params) {
13101311 " μ" ,
13111312 " σ" ,
13121313 " N" ,
1313- " Entropy " ,
1314- " E (norm) " ,
1314+ " H Norm " ,
1315+ legacy_mode ? " H " : " ECS " ,
13151316 " ZD" ,
13161317 " CosSim" );
13171318 LOG_INF (
@@ -1328,17 +1329,17 @@ static bool show_statistics(const common_params & params) {
13281329 blk = -1 ; // not a block layer
13291330 }
13301331
1331- LOG_INF (" %5s\t %-20s\t %11.2f\t %10.4f\t %10.4f\t %8.2f\t %8.2f\t %7d\t %12.4f \t %7.2f%% \t %6.2f%%\t %10.4f\n " ,
1332+ LOG_INF (" %5s\t %-20s\t %11.2f\t %10.4f\t %10.4f\t %8.2f\t %8.2f\t %7d\t %10.2f%% \t %10.4f \t %6.2f%%\t %10.4f\n " ,
13321333 layer.c_str (),
13331334 name.c_str (),
1334- legacy_mode == 1 ? tstat.sum_values : tstat.l2_norm ,
1335+ legacy_mode ? tstat.sum_values : tstat.l2_norm ,
13351336 tstat.min_values ,
13361337 tstat.max_values ,
13371338 tstat.mean_values ,
13381339 tstat.std_deviation ,
13391340 tstat.elements ,
1340- tstat.entropy ,
13411341 100 .0f * (tstat.entropy / std::log2 (tstat.elements )),
1342+ legacy_mode ? tstat.entropy : 100 .0f * std::exp (-0 .01f * tstat.l2_norm ) * std::pow (fabs (tstat.cossim ), 10 .0f ),
13421343 100 .0f * tstat.zd_score ,
13431344 tstat.cossim );
13441345
@@ -1363,25 +1364,37 @@ static bool show_statistics(const common_params & params) {
13631364
13641365 const auto layers = std::count_if (ls.begin (), ls.end (), [](const auto & kv) { return kv.first >= 0 ; });
13651366 LOG_INF (" \n Computing layer statistics (%ld layers)\n " , layers);
1366- LOG_INF (" \n %6s\t %13s\t %5s \t %10s \n " ,
1367+ LOG_INF (" \n %6s\t %13s\t %6s \t %11s \t %6s \n " ,
13671368 " Layer" ,
13681369 legacy_mode ? " Σ(Act²)" : " L₂ Norm" ,
13691370 " ZD" ,
1370- " CosSim" );
1371- LOG_INF (" ============================================\n " );
1371+ " CosSim" ,
1372+ legacy_mode ? " " : " ECS" );
1373+ if (legacy_mode) {
1374+ LOG_INF (" ============================================\n " );
1375+ } else {
1376+ LOG_INF (" =========================================================\n " );
1377+ }
13721378 for (const auto & [layer, stats] : ls) {
13731379 if (layer < 0 || stats.n == 0 ) continue ;
1374- const float lyr_sum = stats.lyr_sum ;
1375- const float lyr_zd = stats.lyr_zd / stats.n ;
13761380 const auto lcs = lyr_cossim.find (layer);
1377- const float lyr_cs = ( lcs != lyr_cossim.end () ) ? lcs->second : 0 .0f ;
1381+ const float lyr_cs = lcs != lyr_cossim.end () ? lcs->second : 0 .0f ;
13781382 const auto ll2n = lyr_l2_norm.find (layer);
1379- const float l2_norm = (ll2n != lyr_l2_norm.end ()) ? ll2n->second : 0 .0f ;
1380- LOG_INF (" %5d\t %11.2f\t %6.2f%%\t %10.4f\n " ,
1383+ const float lyr_l2n = ll2n != lyr_l2_norm.end () ? ll2n->second : 0 .0f ;
1384+ if (legacy_mode) {
1385+ LOG_INF (" %5d\t %11.2f\t %6.2f%%\t %11.4f\n " ,
13811386 layer,
1382- legacy_mode ? lyr_sum : l2_norm ,
1383- 100 .0f * lyr_zd,
1387+ stats. lyr_sum ,
1388+ 100 .0f * stats. lyr_zd / stats. n ,
13841389 lyr_cs);
1390+ } else {
1391+ LOG_INF (" %5d\t %11.2f\t %6.2f%%\t %11.4f\t %8.4f\n " ,
1392+ layer,
1393+ lyr_l2n,
1394+ 100 .0f * stats.lyr_zd / stats.n ,
1395+ lyr_cs,
1396+ 100 .0f * std::exp (-0 .01f * lyr_l2n) * std::pow (fabs (lyr_cs), 10 .0f ));
1397+ }
13851398 }
13861399 LOG_INF (" \n " );
13871400
0 commit comments