PyTorch proporciona el módulo torch.nn para ayudarnos a crear y entrenar la red neuronal. Primero entrenaremos la red neuronal básica en el conjunto de datos MNIST sin utilizar ninguna característica de estos modelos. Usaremos solo la funcionalidad básica del tensor de PyTorch y luego agregaremos incrementalmente una característica de torch.nn a la vez.
torch.nn nos proporciona muchas más clases y módulos para implementar y entrenar la red neuronal.
El paquete nn contiene los siguientes módulos y clases:
S.No | Clase y módulo | Descripción |
---|---|---|
1. | antorcha.nn.Parámetro | Es un tipo de tensor que debe considerarse como parámetro de módulo. |
2. | Contenedores | |
1) módulo.nn.antorcha | Es una clase base para todos los módulos de redes neuronales. | |
2) antorcha.nn.Secuencial | Es un contenedor secuencial en el que se agregarán módulos en el mismo orden en que se pasan en el constructor. | |
3) antorcha.nn.ModuleList | Esto contendrá submódulos en una lista. | |
4) antorcha.nn.ModuleDict | Esto contendrá submódulos en un directorio. | |
5) antorcha.nn.ParameterList | Esto mantendrá los parámetros en una lista. | |
6) antorcha.nn.parameterDict | Esto mantendrá los parámetros en un directorio. | |
3. | Capas de convolución | |
1) antorcha.nn.Conv1d | Este paquete se utilizará para aplicar una convolución 1D sobre una señal de entrada compuesta de varios planos de entrada. | |
2) antorcha.nn.Conv2d | Este paquete se utilizará para aplicar una convolución 2D sobre una señal de entrada compuesta por varios planos de entrada. | |
3) antorcha.nn.Conv3d | Este paquete se utilizará para aplicar una convolución 3D sobre una señal de entrada compuesta por varios planos de entrada. | |
4) antorcha.nn.ConvTranspose1d | Este paquete se utilizará para aplicar un operador de convolución transpuesta 1D sobre una imagen de entrada compuesta por varios planos de entrada. | |
5) antorcha.nn.ConvTranspose2d | Este paquete se utilizará para aplicar un operador de convolución transpuesta 2D sobre una imagen de entrada compuesta por varios planos de entrada. | |
6) antorcha.nn.ConvTranspose3d | Este paquete se utilizará para aplicar un operador de convolución transpuesta 3D sobre una imagen de entrada compuesta por varios planos de entrada. | |
7) antorcha.nn.Desplegada | Se utiliza para extraer bloques locales deslizantes de un tensor de entrada por lotes. | |
8) antorcha.nn.Doblar | Se utiliza para combinar una serie de bloques locales deslizantes en un tensor contenedor grande. | |
4. | Capas de agrupación | |
1) antorcha.nn.MaxPool1d | Se utiliza para aplicar una agrupación máxima 1D sobre una señal de entrada compuesta de varios planos de entrada. | |
2) antorcha.nn.MaxPool2d | Se utiliza para aplicar una agrupación máxima 2D sobre una señal de entrada compuesta de varios planos de entrada. | |
3) antorcha.nn.MaxPool3d | Se utiliza para aplicar una agrupación máxima 3D sobre una señal de entrada compuesta de varios planos de entrada. | |
4) antorcha.nn.MaxUnpool1d | Se utiliza para calcular el inverso parcial de MaxPool1d. | |
5) antorcha.nn.MaxUnpool2d | Se utiliza para calcular el inverso parcial de MaxPool2d. | |
6) antorcha.nn.MaxUnpool3d | Se utiliza para calcular el inverso parcial de MaxPool3d. | |
7) antorcha.nn.AvgPool1d | Se utiliza para aplicar una agrupación promedio 1D sobre una señal de entrada compuesta de varios planos de entrada. | |
8) antorcha.nn.AvgPool2d | Se utiliza para aplicar una agrupación promedio 2D sobre una señal de entrada compuesta de varios planos de entrada. | |
9) antorcha.nn.AvgPool3d | Se utiliza para aplicar una agrupación promedio 3D sobre una señal de entrada compuesta de varios planos de entrada. | |
10) antorcha.nn.FractionalMaxPool2d | Se utiliza para aplicar una agrupación máxima fraccional 2D sobre una señal de entrada compuesta de varios planos de entrada. | |
11) antorcha.nn.LPPool1d | Se utiliza para aplicar una agrupación de potencia promedio 1D sobre una señal de entrada compuesta de varios planos de entrada. | |
12) antorcha.nn.LPPool2d | Se utiliza para aplicar una agrupación de potencia promedio 2D sobre una señal de entrada compuesta de varios planos de entrada. | |
13) antorcha.nn.AdavtiveMaxPool1d | Se utiliza para aplicar una agrupación máxima adaptativa 1D sobre una señal de entrada compuesta de varios planos de entrada. | |
14) antorcha.nn.AdavtiveMaxPool2d | Se utiliza para aplicar una agrupación máxima adaptativa 2D sobre una señal de entrada compuesta de varios planos de entrada. | |
15) antorcha.nn.AdavtiveMaxPool3d | Se utiliza para aplicar una agrupación máxima adaptativa 3D sobre una señal de entrada compuesta de varios planos de entrada. | |
16) antorcha.nn.AdavtiveAvgPool1d | Se utiliza para aplicar una agrupación promedio adaptativa 1D sobre una señal de entrada compuesta de varios planos de entrada. | |
17) antorcha.nn.AdavtiveAvgPool2d | Se utiliza para aplicar una agrupación promedio adaptativa 2D sobre una señal de entrada compuesta de varios planos de entrada. | |
18) antorcha.nn.AdavtiveAvgPool3d | Se utiliza para aplicar una agrupación promedio adaptativa 3D sobre una señal de entrada compuesta de varios planos de entrada. | |
5. | Capas de acolchado | |
1) antorcha.nn.ReflectionPad1d | Rellenará el tensor de entrada utilizando el reflejo del límite de entrada. | |
2) antorcha.nn.ReflactionPad2d | Rellenará el tensor de entrada utilizando el reflejo del límite de entrada. | |
3) antorcha.nn.ReplicationPad1 | Rellenará el tensor de entrada utilizando la replicación del límite de entrada. | |
4) antorcha.nn.ReplicationPad2d | Rellenará el tensor de entrada utilizando la replicación del límite de entrada. | |
5) antorcha.nn.ReplicationPad3d | Rellenará el tensor de entrada utilizando la replicación del límite de entrada. | |
6) antorcha.nn.ZeroPad2d | Rellenará los límites del tensor de entrada con cero. | |
7) antorcha.nn.ConstantPad1d | Rellenará los límites del tensor de entrada con un valor constante. | |
8) antorcha.nn.ConstantPad2d | Rellenará los límites del tensor de entrada con un valor constante. | |
9) antorcha.nn.ConstantPad3d | Rellenará los límites del tensor de entrada con un valor constante. | |
6. | Activaciones no lineales (suma ponderada, no linealidad) | |
1) antorcha.nn.ELU | Se utilizará para aplicar la función de elemento: ELU(x)=máx(0,x)+mín(0,α*(exp(x)-1)) | |
2) antorcha.nn.Hardshrink | Se utilizará para aplicar la función de contracción estricta por elementos: | |
3) antorcha.nn.LeakyReLU | Se utilizará para aplicar la función de elemento: LeakyReLu(x)=max(0,x) +pendiente_negativa*min(0,x) | |
4) antorcha.nn.LogSigmoide | Se utilizará para aplicar la función de elemento: | |
5) antorcha.nn.MultiheadAttention | Se utiliza para permitir que el modelo atienda información de diferentes subespacios de representación. | |
6) antorcha.nn.PReLU | Se utilizará para aplicar la función de elemento: PReLU(x)=máx(0,x)+a*mín(0,x) | |
7) antorcha.nn.ReLU | Se utilizará para aplicar la función unitaria lineal rectificada por elementos: ReLU(x)=máx(0,x) | |
8) antorcha.nn.ReLU6 | Se utilizará para aplicar la función de elemento: ReLU6(x)=mín(máx(0,x),6) | |
9) antorcha.nn.RReLU | Se utilizará para aplicar la función de unidad lineal rectificada con fugas aleatorias, por elementos, como se describe en el artículo: | |
10) antorcha.nn.SELU | Se utilizará para aplicar la función de elementos como: SELU(x)=escala*(max(0,x)+ min(0,a*(exp(x)-1))) Aquí α= 1.6732632423543772848170429916717 y escala = 1.0507009873554804934193349852946. | |
11) antorcha.nn.OBJETIVO | Se utilizará para aplicar la función de elementos como: | |
12) antorcha.nn.Sigmoide | Se utilizará para aplicar la función de elementos como: | |
13) antorcha.nn.Softplus | Se utilizará para aplicar la función de elementos como: | |
14) antorcha.nn.Softshrink | Se utilizará para aplicar la función de contracción suave por elementos como: | |
15) antorcha.nn.Softsign | Se utilizará para aplicar la función de elementos como: | |
16) antorcha.nn.Tanh | Se utilizará para aplicar la función de elementos como: | |
17) antorcha.nn.Tanhshrink | Se utilizará para aplicar la función de elementos como: Tanhshrink(x)=x-Tanh(x) | |
18) antorcha.nn.Umbral | Se utilizará para establecer umbrales en cada elemento del tensor de entrada. El umbral se define como: | |
7. | Activaciones no lineales (otras) | |
1) antorcha.nn.Softmin | Se utiliza para aplicar la función softmin a un tensor de entrada de n dimensiones para reescalarlos. Después de eso, los elementos del tensor de salida de n dimensiones se encuentran en el rango 0, 1 y suman 1. Softmin se define como: | |
2) antorcha.nn.Softmax | Se utiliza para aplicar la función softmax a un tensor de entrada de n dimensiones para reescalarlos. Después de eso, los elementos del tensor de salida de n dimensiones se encuentran en el rango 0, 1 y suman 1. Softmax se define como: | |
3) antorcha.nn.Softmax2d | Se utiliza para aplicar SoftMax sobre funciones a cada ubicación espacial. | |
4) antorcha.nn.LogSoftmax | Se utiliza para aplicar la función LogSoftmax a un tensor de entrada de n dimensiones. La función LofSoftmax se puede definir como: | |
5) antorcha.nn.AdaptiveLogSoftmaxWithLoss | Es una estrategia para entrenar modelos con grandes espacios de salida. Es muy eficaz cuando la distribución de las etiquetas está muy desequilibrada. | |
8. | Capas de normalización | |
1) antorcha.nn.BatchNorm1d | Se utiliza para aplicar la normalización por lotes sobre entradas 2D o 3D. | |
2) antorcha.nn.BatchNorm2d | Se utiliza para aplicar la normalización por lotes en un 4D. | |
3) antorcha.nn.BatchNorm3d | Se utiliza para aplicar la normalización por lotes sobre entradas 5D. | |
4) antorcha.nn.NormaGrupo | Se utiliza para aplicar la normalización de grupo en un mini lote de entradas. | |
5) antorcha.nn.SyncBatchNorm | Se utiliza para aplicar la normalización por lotes sobre entradas de n dimensiones. | |
6) antorcha.nn.InstanceNorm1d | Se utiliza para aplicar una normalización de instancia sobre una entrada 3D. | |
7) antorcha.nn.InstanceNorm2d | Se utiliza para aplicar una normalización de instancia sobre una entrada 4D. | |
8) antorcha.nn.InstanceNorm3d | Se utiliza para aplicar una normalización de instancia sobre una entrada 5D. | |
9) antorcha.nn.Norma de capa | Se utiliza para aplicar la normalización de capas en un mini lote de entradas. | |
10) torch.nn.LocalResponseNorm | Se utiliza para aplicar normalización de respuesta local sobre una señal de entrada que se compone de varios planos de entrada, donde el canal ocupa la segunda dimensión. | |
9. | Capas recurrentes | |
1) antorcha.nn.RNN | Se utiliza para aplicar un Elman RNN multicapa con no linealidad tanh o ReLU a una secuencia de entrada. Cada capa calcula la siguiente función para cada elemento en la secuencia de entrada: ht=tanh(Wa ellosXt+ba ellos+WS.Stt-1+bS.S) | |
2) antorcha.nn.LSTM | Se utiliza para aplicar un RNN de memoria a corto plazo (LSTM) multicapa a una secuencia de entrada. Cada capa calcula la siguiente función para cada elemento en la secuencia de entrada: | |
3) antorcha.nn.GRU | Se utiliza para aplicar una unidad recurrente cerrada (GRU) RNN de múltiples capas a una secuencia de entrada. Cada capa calcula la siguiente función para cada elemento en la secuencia de entrada: | |
4) antorcha.nn.RNNCell | Se utiliza para aplicar una celda Elman RNN con no linealidad tanh o ReLU a una secuencia de entrada. Cada capa calcula la siguiente función para cada elemento en la secuencia de entrada: h'=tanh(Wa ellosx+ba ellos+WS.Sh+bS.S) ReLU se utiliza en lugar de tanh | |
5) antorcha.nn.LSTMCell | Se utiliza para aplicar una celda de memoria a corto plazo (LSTM) a una secuencia de entrada. Cada capa calcula la siguiente función para cada elemento en la secuencia de entrada: Donde σ es la función sigmoidea y * es el producto de Hadamard. | |
6) antorcha.nn.GRUCell | Se utiliza para aplicar una celda de unidad recurrente cerrada (GRU) a una secuencia de entrada. Cada capa calcula la siguiente función para cada elemento en la secuencia de entrada: | |
10. | Capas lineales | |
1) antorcha.nn.Identidad | Es un operador de identidad de marcador de posición que no tiene en cuenta los argumentos. | |
2) antorcha.nn.Lineal | Se utiliza para aplicar una transformación lineal a los datos entrantes: y=xAt+b | |
3) antorcha.nn.Bilineal | Se utiliza para aplicar una transformación bilineal a los datos entrantes: y=x1Hacha2+b | |
11. | Capas de abandono | |
1) antorcha.nn.Abandono | Se utiliza para la regularización y prevención de la coadaptación de las neuronas. un factor de durante el entrenamiento se escala el resultado. Eso significa que el módulo calcula una función de identidad durante la evaluación. | |
2) antorcha.nn.Dropout2d | Si los píxeles adyacentes dentro de los mapas de características están correlacionados, torch.nn.Dropout no regularizará las activaciones y disminuirá la tasa de aprendizaje efectiva. En este caso, torch.nn.Dropout2d() se utiliza para promover la independencia entre mapas de características. | |
3) antorcha.nn.Dropout3d | Si los píxeles adyacentes dentro de los mapas de características están correlacionados, torch.nn.Dropout no regularizará las activaciones y disminuirá la tasa de aprendizaje efectiva. En este caso, torch.nn.Dropout2d () se utiliza para promover la independencia entre mapas de características. | |
4) antorcha.nn.AlphaDropout | Se utiliza para aplicar Alpha Dropout sobre la entrada. Alpha Dropout es un tipo de abandono que mantiene la propiedad de autonormalización. | |
12. | Capas dispersas | |
1) antorcha.nn.Incrustación | Se utiliza para almacenar incrustaciones de palabras y recuperarlas mediante índices. La entrada del módulo es una lista de índices y la salida es la incrustación de palabras correspondiente. | |
2) antorcha.nn.EmbeddingBag | Se utiliza para calcular sumas o medias de 'bolsas' de incrustación sin crear una instancia de la incrustación intermedia. | |
13. | Función de distancia | |
1) antorcha.nn.CosenoSimilaridad | Devolverá la similitud del coseno entre x1 y x2, calculada a lo largo de dim. | |
2) antorcha.nn.PairwiseDistance | Calcula la distancia por pares por lotes entre los vectores v1, v2 usando la norma p: | |
14. | Función de pérdida | |
1) antorcha.nn.L1Pérdida | Se utiliza para un criterio que mide el error absoluto medio entre cada elemento en la entrada x y el objetivo y. La pérdida no reducida se puede describir como: l(x,y)=L={l1,...,lnorte},lnorte=|xnorte-ynorte|, Donde N es el tamaño del lote. | |
2) antorcha.nn.MSELoss | Se utiliza para un criterio que mide el error cuadrático medio entre cada elemento en la entrada x y el objetivo y. La pérdida no reducida se puede describir como: l(x,y)=L={l1,...,lnorte},lnorte=(xnorte-ynorte)2, Donde N es el tamaño del lote. | |
3) antorcha.nn.CrossEntropyLoss | Este criterio combina nn.LogSoftmax() y nn.NLLLoss() en una sola clase. Es útil cuando entrenamos un problema de clasificación con clases C. | |
4) antorcha.nn.CTCLoss | La pérdida de clasificación temporal conexionista calcula la pérdida entre una serie de tiempo continua y una secuencia objetivo. | |
5) antorcha.nn.NLLPérdida | La pérdida de probabilidad logarítmica negativa se utiliza para entrenar un problema de clasificación con clases C. | |
6) antorcha.nn.PoissonNLLPérdida | La pérdida de probabilidad logarítmica negativa con la distribución de Poisson de t objetivo~Poisson(entrada)pérdida(entrada,objetivo)=entrada-objetivo*log(objetivo!)el objetivo. | |
7) antorcha.nn.KLDivLoss | Es una medida de distancia útil para la distribución continua y también es útil cuando realizamos una regresión directa sobre el espacio de distribución continua de la producción. | |
8) antorcha.nn.BCELoss | Se utiliza para crear un criterio que mide la entropía cruzada binaria entre el objetivo y la salida. La pérdida no reducida se puede describir como: l(x,y)=L={l1,...,lnorte},lnorte=-vnorte[ynorte*logxnorte+ (1-ynorte)*registro(1-x)norte)], Donde N es el tamaño del lote. | |
9) antorcha.nn.BCEWithLogitsLoss | Combina una capa Sigmoide y BCELoss en una sola clase. Podemos aprovechar el truco log-sum-exp para lograr estabilidad numérica combinando la operación en una sola capa. | |
10) antorcha.nn.MarginRankingLoss | Crea un criterio que mide la pérdida de entradas dadas x1, x2, dos tensores de mini lote 1D y una etiqueta tensor de mini lote 1D y que contiene 1 o -1. La función de pérdida para cada muestra del minilote es la siguiente: pérdida(x,y)=max(0,-y*(x1-X2)+margen | |
11) torch.nn.HingeEmbeddingLoss | HingeEmbeddingLoss mide la pérdida de un tensor de entrada x dado y un tensor de etiquetas y que contiene 1 o -1. Se utiliza para medir si dos entradas son similares o diferentes. La función de pérdida se define como: | |
12) antorcha.nn.MultiLabelMarginLoss | Se utiliza para crear un criterio que optimiza una pérdida de bisagra de clasificación múltiple entre la entrada x y la salida y. | |
13) antorcha.nn.SmoothL1Loss | Se utiliza para crear un criterio que utiliza un término al cuadrado si el error absoluto de los elementos cae por debajo de 1 y un término L1 en caso contrario. También se conoce como pérdida de Huber: | |
14) antorcha.nn.SoftMarginLoss | Se utiliza para crear un criterio que optimiza la pérdida logística de clasificación de dos clases entre el tensor de entrada x y el tensor objetivo y que contienen 1 o -1. | |
15) antorcha.nn.MultiLabelSoftMarginLoss | Se utiliza para crear un criterio que optimiza la pérdida uno contra todos de etiquetas múltiples en función de la entropía máxima entre la entrada x y el objetivo y de tamaño (N, C). | |
16) torch.nn.CosineEmbeddingLoss | Se utiliza para crear un criterio que mide la pérdida de los tensores de entrada x1, x2 dados y una etiqueta de tensor y con valores 1 o -1. Se utiliza para medir si dos entradas son similares o diferentes, utilizando la distancia del coseno. | |
17) antorcha.nn.MultiMarginLoss | Se utiliza para crear un criterio que optimiza una pérdida de bisagra de clasificación multiclase entre la entrada x y la salida y. | |
18) antorcha.nn.TripletMarginLoss | Se utiliza para crear un criterio que mide la pérdida triplete de tensores de entrada x1, x2, x3 dados y un margen con un valor mayor que 0. Se utiliza para medir una similitud relativa entre muestras. Un triplete se compone de un ancla, un ejemplo positivo y un ejemplo negativo. L(a,p,n)=max{d(ai,pagi)-d(ai,nortei)+margen,0} | |
15. | Capas de visión | |
1) antorcha.nn.PixelShuffle | Se utiliza para reorganizar los elementos en un tensor de forma(*,C×r2,H,W) a un tensor de forma (*,C,H×r,W,r) | |
2) antorcha.nn.Upsample | Se utiliza para muestrear datos 1D, 2D o 3D multicanal determinados. | |
3) antorcha.nn.upsamplingNearest2d | Se utiliza para aplicar muestreo ascendente del vecino más cercano 2D a una señal de entrada compuesta por múltiples canales de entrada. | |
4) antorcha.nn.UpsamplingBilinear2d | Se utiliza para aplicar muestreo ascendente bilineal 2D a una señal de entrada compuesta por múltiples canales de entrada. | |
16. | Capas DataParallel (multi-GPU, distribuidas) | |
1) antorcha.nn.DataParallel | Se utiliza para implementar el paralelismo de datos a nivel de módulo. | |
2) antorcha.nn.DistributedDataParallel | Se utiliza para implementar el paralelismo de datos distribuidos, que se basa en el paquete torch.distributed a nivel de módulo. | |
3) antorcha.nn.DistributedDataParallelCPU | Se utiliza para implementar el paralelismo de datos distribuidos para la CPU a nivel de módulo. | |
17. | Utilidades | |
1) antorcha.nn.clip_grad_norm_ | Se utiliza para recortar la norma de gradiente de un iterable de parámetros. | |
2) antorcha.nn.clip_grad_value_ | Se utiliza para recortar la norma de gradiente de un iterable de parámetros en el valor especificado. | |
3) antorcha.nn.parameters_to_vector | Se utiliza para convertir parámetros a un vector. | |
4) antorcha.nn.vector_to_parameters | Se utiliza para convertir un vector a los parámetros. | |
5) antorcha.nn.weight_norm | Se utiliza para aplicar la normalización de peso a un parámetro en el módulo dado. | |
6) antorcha.nn.remove_weight_norm | Se utiliza para eliminar la normalización de peso y la reparametrización de un módulo. | |
7) antorcha.nn.spectral_norm | Se utiliza para aplicar normalización espectral a un parámetro en el módulo dado. | |
8) antorcha.nn.PackedSequence | Se utilizará para contener los datos y la lista de tamaños de lote de una secuencia empaquetada. | |
9) antorcha.nn.pack_padded_sequence | Se utiliza para empaquetar un tensor que contiene secuencias acolchadas de longitud variable. | |
10) antorcha.nn.pad_packed_sequence | Se utiliza para rellenar un lote empaquetado de secuencias de longitud variable. | |
11) antorcha.nn.pad_sequence | Se utiliza para rellenar una lista de tensores de longitud variable con un valor de relleno. | |
12) antorcha.nn.pack_sequence | Se utiliza para empaquetar una lista de tensores de longitud variable. | |
13) antorcha.nn.remove_spectral_norm | Se utiliza para eliminar la normalización espectral y la reparametrización de un módulo. |
Referencia:
https://pytorch.org/docs/stable/nn.html