PyTorch torch.nn.Conv1d-Funktion

PyTorch torch.nn 参考手册PyTorch torch.nn Referenzhandbuch


torch.nn.Conv1dIst ein eindimensionales Faltungsmodul in PyTorch.

Wird hauptsächlich zur Verarbeitung von Sequenzdaten verwendet, wie z. B. Text-, Audio- und Zeitreihensignale.

Funktionsdefinition

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

Parameterbeschreibung

  • in_channels: Anzahl der Eingangskanäle
  • out_channels: Anzahl der Ausgangskanäle
  • kernel_size: Kernelgröße

Anwendungsbeispiele

Beispiel 1: Grundlegende Verwendung

Beispiel

import torch
import torch.nn as nn

# 1D-Faltung: Eingangskanäle=3, Ausgangskanäle=64, Kernelgröße=3
conv1d = nn.Conv1d(in_channels=3, out_channels=64, kernel_size=3, padding=1)

# Eingabe: Batch=4, Kanäle=3, Sequenzlänge=100
x = torch.randn(4, 3, 100)

output = conv1d(x)

print("Eingabeform:", x.shape)
print("Ausgabeform:", output.shape)

Beispiel 2: Textklassifikation

Beispiel

import torch
import torch.nn as nn

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

        # Mehrere Faltungskerne unterschiedlicher Größe
        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)

        # Faltung + 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]  # Globales Max-Pooling
            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, Sequenz=50
output = model(x)

print("Eingabeform:", x.shape)
print("Ausgabeform:", output.shape)

Beispiel 3: Audioverarbeitung

Beispiel

import torch
import torch.nn as nn

# Audio-Merkmalsextraktion
conv_audio = nn.Conv1d(in_channels=1, out_channels=32, kernel_size=5, stride=2)

# Einkanal-Audio: Batch=4, Kanäle=1, Abtastpunkte=16000
audio = torch.randn(4, 1, 16000)

output = conv_audio(audio)

print("Eingabeform:", audio.shape)
print("Ausgabeform:", output.shape)
print("Ausgabelänge:", output.shape[2])

Anwendungsfälle

  • Textklassifikation: TextCNN
  • Audioverarbeitung: Sprachmerkmalsextraktion
  • Zeitreihen: Signalfilterung

Hinweis: Die Form des Eingabe-Tensors ist (Batch, Kanäle, Länge).


PyTorch torch.nn 参考手册PyTorch torch.nn Referenzhandbuch

Andere Erweiterungen