1. Empecemos con una red profunda convencional. Coge un programa que amplía lo que vimos de este problema y ponle unas cuantas capas ocultas (números entre los corchetes). Pruébalo.
  2. Sobre esa red prueba los enfoques vistos en la práctica anterior.
  3. Probemos una red convolutiva (alguien por ahí dice que pongas loteajuste un poco alto para no eternizarte)

    Las capas convolutivas se indican como '...c...' donde delante va la cantidad de procesadores y detrás el ancho de convolución.

  4. Añadamos reductoras. Las capas reductoras se marcan como 'r...' donde en los puntos suspensivos va el factor de reducción.
  5. Añadamos un final convencional. Los anchos de capas convolutivas te dan el lado de la imagen con que trabaja la siguiente capa; es mejor que el tamaño al llegar a la parte convencional esté dentro de un orden.
  6. Haz los siguientes experimentos:
  7. Otros enfoques para poder poner redes grandes y que no se dispare el número de pesos:
    Matrices de pesos simplificadas
    Prueba a poner que las capas tengan matrices de pesos parametrizadas, por ejemplo, mediante una simplificación a ortogonales (enlace a documentación) En una de las convolutivas, ponle o por delante. Lo que hace es sustituir las Conv2d(...) por nn.utils.parametrizations.orthogonal(nn.Conv2d(...)) Esto hace que el tamaño de una matriz m × n pase a m( n+1 ) 2 (podemos pensar en aproximadamente la mitad)

    Prepara y ajusta. en principio a las de más impacto (más pesos) y vete ampliando hasta que veas que la precisión cae significativamente. Donde te quedes, anota otra línea en la tabla de comparación.

    Aplicación de filtros separables
    Sustituye las convoluciones normales por separables. Anteponle a la capa que quieras una s. El cambio es del estilo de:
    Original Con filtro separable
    nn.Conv2d(4, 2, kernel_size=(5, 5), padding=2) nn.Conv2d(4, 4, kernel_size=(5, 1), padding=(2, 0)),
    nn.Conv2d(4, 2, kernel_size=(1, 5), padding=(0, 2))

    Fíjate que en ese ejemplo, hemos pasado de 25 pesos a 10 (aunque como hay 4,4 en la primera capa, el ahorro no es así de directo)

    Prepara, ajusta primero las capas de más pesos, hasta que veas que la precisión se degrada. Hasta donde llegues, anota otra línea