es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo funciona la operación de expansión en Pytorch con dilatación y paso?

En mi caso, estoy aplicando la operación de despliegue en un tensor de A como se muestra a continuación:

A.shape = torch.Size([16, 309,128])
A = A.unsqueeze(1) # supongo que es para convertirlo en 4 dimensiones para la operación de despliegue
A_out = F.unfold(A, (7, 128), stride=(1, 128), dilation=(3,1))
A_out.shape = torch.Size([16, 896, 291])

No entiendo por qué es 291. Si el factor de dilatación no estuviera ahí, ¿no sería [16, 896, 303]? Pero si dilation = 3, ¿cómo se obtiene 291? Además, no se especificó el “stride”, así que utilizo el valor por defecto de 1, ¿pero qué sucede si se especifica un valor como 4? Por favor, guíenme.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El parámetro de “dilatación” en la función F.unfold() representa el espaciado entre los valores en el filtro. Se utiliza para aumentar el campo receptivo del filtro sin agregar más parámetros. En este caso, una dilatación de 3 significa que hay 2 posiciones saltadas entre los valores en el filtro. Por lo tanto, el tensor de salida tiene una dimensión de ancho más pequeña (por un factor de 2) en comparación con el caso en que no se usa dilatación.

    Entonces, si A_out se hubiera calculado sin el parámetro de “dilatación”, su forma habría sido [16, 896, 303]. Pero con dilation=(3,1), la forma es [16, 896, 291].

    En cuanto al parámetro de “stride”, determina el tamaño del paso de la ventana deslizante al realizar la operación de “unfold”. Si se usa stride=(1,128), significa que la ventana se mueve un paso de 1 en la dimensión de altura y un paso de 128 en la dimensión de ancho. Si se usa un valor de “stride” diferente, también afectaría la forma del tensor de salida.

Comments are closed.