1 votos

Normalizar (media y std) un array 3D

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: enter image description here

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) enter image description here

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.

1voto

scompt.com Puntos 11304

No soy un experto en NN's, pero aquí están mis dos centavos: Tal vez usted consigue una imagen más clara mediante la simplificación de su conjunto de características: Sólo desenredar el marco 2d en un vector de características 1d. De acuerdo con su descripción se obtiene una matriz plana de 60*130=7800 características para cada muestra. Por lo que he entendido, usted quiere predecir algún valor objetivo, o etiqueta, utilizando la información contenida en estas 7800 características. Si las características difieren mucho en la escala, el descenso del gradiente para la NN puede ser muy lento . (Por ejemplo, los valores de la esquina superior izquierda de su espacio de características 2d pueden variar en 10's de DB' s y las características de la esquina inferior pueden variar sólo en fracciones (0,01) de DB' s). Antes de estandarizar, tal vez calcule la varianza de cada característica y la grafique. Si la varianza de las características no difiere mucho (es decir, todas están dentro de uno o dos órdenes de magnitud), yo no me preocuparía y omitiría la normalización. Si difieren mucho, el camino a seguir es estandarizar cada característica por separado: calcular la media y la DE de cada característica, y luego restar y dividir el resultado de cada muestra por separado.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X