Comprensión de redes neuronales convolucionales unidimensionales (torch.nn.Conv1d)

Introducción de parámetros

torch.nn.Conv1d(in_channels,       
                out_channels,     
                kernel_size,      
                stride,        
                padding,        
                padding_mode    
                dilation,      
                groups,        
                bias,           
                )
  • in_channels : (int) El número de canales de los datos de entrada, es decir, cuántos conjuntos de vectores están representados por una determinada pieza de datos de entrenamiento. Por ejemplo, para un dato representado por un vector unidimensional, el número de canales es 1; para datos de texto, una oración se compone de m palabras, luego el número de canales puede ser m
  • out_channels : (int) El número de canales generados por convolución, que puede entenderse como el número de núcleos de convolución
  • kernel_size : (int o tuple) el tamaño del kernel de convolución, si el parámetro es una tupla, debe haber solo un elemento en la tupla
  • zancada : (int o tupla, opcional) La zancada de la convolución. El valor predeterminado es 1, si es una tupla, debe haber solo un elemento en la tupla
  • padding : (int, tuple o str, opcional) La cantidad de relleno para agregar a ambos lados de la entrada. El valor predeterminado es 0
  • padding_mode (cadena, opcional), modo de relleno en ambos lados, que indica diferentes métodos de relleno en ambos lados, los modos opcionales son "'ceros', 'reflejar', 'replicar' o 'circular'. Predeterminado: 'ceros'"
  • dilatación : (int o tupla, opcional) El espacio entre los elementos del núcleo. El valor predeterminado es 1, es decir, cada elemento del kernel de convolución está uno al lado del otro. Esto es difícil de describir. Puedes ver la animación intuitiva aquí.
  • grupos : (int, opcional) Número de conexiones de bloqueo de los canales de entrada a los canales de salida. El valor predeterminado es 1. La cantidad de canales de entrada y la cantidad de canales de salida deben poder dividirse en grupos. Cuando los grupos son n, significa que hay n núcleos de convolución, y los datos de entrada se dividen en n partes para obtener la características después de la convolución.
  • bias : (bool, opcional) Si es True, agrega un sesgo aprendible a la salida. El defecto es cierto

de entrada y salida

input – [batch_size , in_channels , i] (tamaño del lote, número de canales de datos de entrada, dimensiones de los datos de entrada).
output – (batch_size, out_channels, i] (tamaño del lote, número de canales de datos de salida, dimensión de los datos después de la convolución).
Método de cálculo de la dimensión después de la convolución : n − k + 2 × ps + 1 \frac{n-k+ 2 \veces{p}}{s} + 1snorte - k + 2 × pag+1 , (n: dimensión de datos de entrada, k: tamaño del kernel de convolución, p: usar relleno de límites, s: tamaño de paso).
Dimensión del núcleo de convolución: [in_channels, kernel_size, out_channels], out_channels representa el número de núcleos de convolución, utilizados para extraer características multidimensionales.

Por ejemplo

Se define de la siguiente manera:

  • canales_de_entrada=1, canales_de_salida=1
  • Canal de entrada: 1, canal de salida: 1, núcleo de convolución: 1 × \times× 3× \veces× 1, zancada: 1, relleno: 0
  • Tamaño de lote: 1, Número de canales de datos: 1, Longitud de datos: 5
import torch
import torch.nn as nn
input = torch.randn(1, 1, 5)
conv = nn.Conv1d(in_channels=1, out_channels=1, kernel_size=3, stride=1, padding=0)
out = conv(input)

Proceso de cálculo:
inserte la descripción de la imagen aquí
salida: tamaño de lote: 1, número de canales de datos: 1, longitud de datos: 3
Referencia: https://blog.csdn.net/xu624735206/article/details/124961990

Supongo que te gusta

Origin blog.csdn.net/qq_45097352/article/details/127278451
Recomendado
Clasificación