import numpy as np conv=np.load("/counts_conv.npy").astype(float) sys7k=np.load("/counts_sys7k.npy").astype(float) vis=np.load("/counts_vision.npy").astype(float) L,E=conv.shape print("=== ANALISIS EXPERTOS DE VISION ===") va=(vis>0).sum(1) print(f"expertos activados por tokens VISUALES: min={va.min()} max={va.max()} mean={va.mean():.0f} de {E}") print(f"activaciones visuales totales: {vis.sum()/1e6:.1f}M") puros=0 for l in range(L): cr=np.argsort(np.argsort(conv[l])) ve=np.where(vis[l]>0)[0] p=[e for e in ve if cr[e]0)[0] vs=ve[np.argsort(-vis[l][ve])]; cap=min(len(vs),int(N*0.35)) for e in vs[:cap]: if len(chosen)=N: break chosen.add(int(e)) sel[l]=sorted(chosen)[:N] np.save(f"/sel_{N}.npy",sel) print(f" N={N}: {vt/L:.0f} expertos de vision garantizados/capa") print("DONE")