Fonction torch.nn.Conv1d de PyTorch

PyTorch torch.nn 参考手册Manuel de référence torch.nn de PyTorch


torch.nn.Conv1dEst un module de convolution unidimensionnel dans PyTorch.

Principalement utilisé pour le traitement des données séquentielles, telles que le texte, l'audio et les signaux de séries temporelles.

Définition de fonction

torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

Description du paramètre

  • in_channels: Nombre de canaux d'entrée
  • out_channels: Nombre de canaux de sortie
  • kernel_size: Taille du noyau

Exemples d'utilisation

Exemple 1 : Utilisation de base

Exemple

import torch
import torch.nn as nn

# Convolution 1D : canaux d'entrée=3, canaux de sortie=64, taille du noyau=3
conv1d = nn.Conv1d(in_channels=3, out_channels=64, kernel_size=3, padding=1)

# Entrée : batch=4, canaux=3, longueur de séquence=100
x = torch.randn(4, 3, 100)

output = conv1d(x)

print("Forme d'entrée :", x.shape)
print("Forme de sortie :", output.shape)

Exemple 2 : Classification de texte

Exemple

import torch
import torch.nn as nn

class TextCNN(nn.Module):
    def __init__(self, vocab_size, embed_dim, num_classes):
        super(TextCNN, self).__init__()
        # Couche d'embedding : (batch, seq) -> (batch, embed, seq)
        self.embedding = nn.Embedding(vocab_size, embed_dim)

        # Plusieurs noyaux de convolution de tailles différentes
        self.convs = nn.ModuleList([
            nn.Conv1d(embed_dim, 128, kernel_size=k)
            for k in [2, 3, 4, 5]
        ])
        self.fc = nn.Linear(128 * 4, num_classes)

    def forward(self, x):
        # x: (batch, seq)
        x = self.embedding(x)  # (batch, seq, embed)
        x = x.permute(0, 2, 1)  # (batch, embed, seq)

        # Convolution + ReLU + GlobalMaxPool
        pooled = []
        for conv in self.convs:
            c = conv(x)  # (batch, 128, seq')
            c = nn.functional.relu(c)
            c = c.max(dim=2)[0]  # Pooling max global
            pooled.append(c)

        x = torch.cat(pooled, dim=1)
        return self.fc(x)

# Test
model = TextCNN(vocab_size=10000, embed_dim=128, num_classes=2)
x = torch.randint(0, 10000, (4, 50))  # batch=4, seq=50
output = model(x)

print("Forme d'entrée :", x.shape)
print("Forme de sortie :", output.shape)

Exemple 3 : Traitement audio

Exemple

import torch
import torch.nn as nn

# Extraction de caractéristiques audio
conv_audio = nn.Conv1d(in_channels=1, out_channels=32, kernel_size=5, stride=2)

# Audio monocanal : batch=4, canaux=1, points d'échantillonnage=16000
audio = torch.randn(4, 1, 16000)

output = conv_audio(audio)

print("Forme d'entrée :", audio.shape)
print("Forme de sortie :", output.shape)
print("Longueur de sortie :", output.shape[2])

Cas d'utilisation

  • Classification de texte: TextCNN
  • Traitement audio: Extraction de caractéristiques de la parole
  • Séries temporelles: Filtrage du signal

Remarque : La forme du tenseur d'entrée est (batch, channels, length).


PyTorch torch.nn 参考手册Manuel de référence torch.nn de PyTorch

Autres extensions