Descárgate el fichero base de predecir precios de casas en el que se han añadido algunas funciones para analizar la red. El fichero de datos es el mismo; recógelo de la práctica inicial.

Tendrás que definir lo mismo que en la primera práctica:

Tras el ajuste, te pasa una batería de análisis globales de la red ajustada. ¿Qué conclusiones sacas de los números y gráficos que te muestra? A partir de los pesos, derivadas o similares intenta hacer una interpretación de la respuesta de la red ¿Cómo son de coherentes unos análisis con otros?

Aprovechar los análisis para rediseñar la red

Puede que al analizar la red llegues a la conclusión de que le sobra complejidad. Puedes dejarlo, pero eso va a introducir ruido. Una forma de quitarlo es manualmente: volver a hacer la red con menos conexiones o procesadores. Para las pruebas, te puede convenir guardar y cargar la red (para ahorrarte ajustes). Puedes cargar una red ya definida, con red=torch.load(nombrefichero) y guardarla con torch.save(red,nombfich)

Partimos de una red original grande. Ajusta una red con muchos procesadores y guárdala. En las restantes pruebas directamente la cargas sin ajustarla otra vez.

Anular pesos pequeños

parametros=[]]
for capa in red.modules():
	if isinstance(capa, torch.nn.Linear):
		parametros.append((capa,'weight'))
torch.nn.utils.prune.global_unstructured(parametros,pruning_method=torch.nn.utils.prune.L1Unstructured,amount=cuantorecorte) 

¿Dejas los valores de pesos preservados o reajustas a los supervivientes?

Haz pruebas.

Quitar procesadores

En el mismo ciclo...
	if len(capa.weight)>2:# si vas a quitar 2 en cada capa
        torch.nn.utils.prune.ln_structured(capa,name='weight',amount=2,n=2,dim=0)