Tengo problemas para visualizar cómo normalizar una matriz 3D. Estoy tratando de utilizar el espectrograma de los archivos de sonido para una tarea de clasificación de sonido utilizando redes neuronales. Así es como se ve un espectrograma:
Olvidando los ejes y las escalas, es sólo una matriz 2D, como lo sería una imagen en escala de grises. Números que llenan una cuadrícula de dimensiones 60x130 digamos. Así que si tengo 100 archivos de sonido, entonces las dimensiones de la matriz serían 100x60x130
Desde CS231n En las notas del curso he visto que es recomendable normalizar la entrada a la red, y una de las formas habituales de hacerlo es restando la media (centrando en cero) y dividiendo por la desviación estándar de los datos. Lo veo claramente cuando se trata de datos 2D, y su efecto es fácilmente apreciable aquí:
donde acabo de trazar algunos valores (x,y)
Y lo hice restando a los valores x, la media entre los valores x; y restando a los valores y, la media entre los valores y. Y luego dividiendo los valores "x" centrados en cero por la std(x) y los valores "y" centrados en cero por la std(y).
Ahora, soy completamente incapaz de extender este procedimiento al caso 3D. Si pienso en el eje 0 (índice 0 como en Python, es decir el eje del número de archivos de sonido en este caso), y calculo la media a través de esa dimensión, voy a obtener un array de dimensiones 60x130. ¿Debo entonces restar cada uno de esos valores 60x130, a cada una de las entradas? Por lo tanto, para cada nuevo ejemplo de 1x60x130, ¿resto (por elementos) la matriz de 60x130 "media entre ejemplos" obtenida?
¿Debo calcular el Std a través del eje 0 (número de ejemplos) y luego dividir cada valor de la matriz 1x60x130 de entrada por cada valor de esta matriz Std-60x130?
¿O estoy completamente equivocado?
Muchas gracias si has leído hasta aquí, no he conseguido exprimir más la pregunta.