@@ -1324,50 +1324,42 @@ static bool show_statistics(const common_params & params) {
13241324
13251325 const float w_sum = tstat.elements * tstat.sum_values ;
13261326 const float w_zd = tstat.elements * tstat.zd_score ;
1327- const float w_cossim = tstat.elements * tstat.cossim ;
13281327
13291328 if (ws.find (blk) != ws.end ()) {
13301329 ws[blk].w_sum += w_sum;
13311330 ws[blk].w_zd += w_zd;
1332- ws[blk].w_cossim += w_cossim;
13331331 ws[blk].n += tstat.elements ;
13341332 } else {
13351333 weighted_stats temp_ws;
13361334 temp_ws.w_sum = w_sum;
13371335 temp_ws.w_zd = w_zd;
1338- temp_ws.w_cossim = w_cossim;
13391336 temp_ws.n = tstat.elements ;
13401337 ws[blk] = temp_ws;
13411338 }
13421339 }
13431340
1344- const int layers = std::count_if (ws.begin (), ws.end (), [](const auto & kv) { return kv.first >= 0 ; });
1345- LOG_INF (" \n Computing weighted average statistics per layer (%d layers)\n " , layers);
1341+ std::map<int , float > layer_cossim;
1342+ compute_layer_statistics (ts, layer_cossim, g_collector.get_mstats ());
1343+
1344+ const auto layers = std::count_if (ws.begin (), ws.end (), [](const auto & kv) { return kv.first >= 0 ; });
1345+ LOG_INF (" \n Computing aggregated statistics per layer (%ld layers)\n " , layers);
13461346 LOG_INF (" \n %6s\t %16s\t %7s\t %11s\n " ,
13471347 " Layer" ,
1348- tensor_calc_mode == 1 ? " μL ₂ Norm" : " μΣ (Act²)" ,
1349- " μZD " ,
1350- " μCosSim " );
1348+ tensor_calc_mode == 1 ? " L ₂ Norm" : " Σ (Act²)" ,
1349+ " ZD " ,
1350+ " CosSim " );
13511351 LOG_INF (" ============================================\n " );
1352- for (const auto & [first, second] : ws) {
1353- const auto & layer = first;
1354- const auto & stats = second;
1355-
1356- if (stats.n == 0 ) {
1357- continue ;
1358- }
1359-
1360- if (layer >= 0 ) {
1361- const float w_sum = stats.w_sum / stats.n ;
1362- const float w_zd = stats.w_zd / stats.n ;
1363- const float w_cossim = stats.w_cossim / stats.n ;
1364-
1365- LOG_INF (" %5d\t %11.2f\t %6.2f%%\t %10.4f\n " ,
1366- layer,
1367- w_sum,
1368- 100 .0f * w_zd,
1369- w_cossim);
1370- }
1352+ for (const auto & [layer, stats] : ws) {
1353+ if (layer < 0 || stats.n == 0 ) continue ;
1354+ const float w_sum = stats.w_sum / stats.n ;
1355+ const float w_zd = stats.w_zd / stats.n ;
1356+ const auto lcs = layer_cossim.find (layer);
1357+ const float cossim = (lcs != layer_cossim.end ()) ? lcs->second : 0 .0f ;
1358+ LOG_INF (" %5d\t %11.2f\t %6.2f%%\t %10.4f\n " ,
1359+ layer,
1360+ w_sum,
1361+ 100 .0f * w_zd,
1362+ cossim);
13711363 }
13721364 LOG_INF (" \n " );
13731365
0 commit comments