rustorch 0.6.29

Production-ready PyTorch-compatible deep learning library in Rust with special mathematical functions (gamma, Bessel, error functions), statistical distributions, Fourier transforms (FFT/RFFT), matrix decomposition (SVD/QR/LU/eigenvalue), automatic differentiation, neural networks, computer vision transforms, complete GPU acceleration (CUDA/Metal/OpenCL), SIMD optimizations, parallel processing, WebAssembly browser support, comprehensive distributed learning support, and performance validation
Documentation
# RusTorch API Dokumentation

## 📚 Vollständige API-Referenz

Dieses Dokument bietet umfassende API-Dokumentation für RusTorch v0.5.15, organisiert nach Modulen und Funktionalität. Es umfasst einheitliche Fehlerbehandlung mit `RusTorchError` und `RusTorchResult<T>` für konsistente Fehlerverwaltung über alle 1060+ Tests. **Phase 8 ABGESCHLOSSEN** fügt erweiterte Tensor-Utilities hinzu, einschließlich bedingter Operationen, Indizierung und statistischer Funktionen. **Phase 9 ABGESCHLOSSEN** führt umfassendes Serialisierungssystem ein mit Modell-Speichern/Laden, JIT-Kompilation und Unterstützung mehrerer Formate einschließlich PyTorch-Kompatibilität.

## 🏗️ Kern-Architektur

### Modul-Struktur

```
rustorch/
├── tensor/              # Kern-Tensor-Operationen und Datenstrukturen
├── nn/                  # Neuronale Netzwerk-Layer und Funktionen
├── autograd/            # Automatische Differenzierungsengine
├── optim/               # Optimierer und Lernraten-Scheduler
├── special/             # Spezielle mathematische Funktionen
├── distributions/       # Statistische Verteilungen
├── vision/              # Computer Vision Transformationen
├── linalg/              # Lineare Algebra Operationen (BLAS/LAPACK)
├── gpu/                 # GPU-Beschleunigung (CUDA/Metal/OpenCL/WebGPU)
├── sparse/              # Sparse-Tensor-Operationen und Pruning (Phase 12)
├── serialization/       # Modell-Serialisierung und JIT-Kompilation (Phase 9)
└── wasm/                # WebAssembly-Bindings (siehe [WASM API Dokumentation](WASM_API_DOCUMENTATION.md))
```

## 📊 Tensor-Modul

### Grundlegende Tensor-Erstellung

```rust
use rustorch::tensor::Tensor;

// Grundlegende Erstellung
let tensor = Tensor::new(vec![2, 3]);               // Formbasierte Erstellung
let tensor = Tensor::from_vec(data, vec![2, 3]);    // Aus Daten-Vektor
let tensor = Tensor::zeros(vec![10, 10]);           // Mit Nullen gefĂĽllter Tensor
let tensor = Tensor::ones(vec![5, 5]);              // Mit Einsen gefĂĽllter Tensor
let tensor = Tensor::randn(vec![3, 3]);             // Zufällige Normalverteilung
let tensor = Tensor::rand(vec![3, 3]);              // Zufällige Gleichverteilung [0,1)
let tensor = Tensor::eye(5);                        // Einheitsmatrix
let tensor = Tensor::full(vec![2, 2], 3.14);       // Mit spezifischem Wert fĂĽllen
let tensor = Tensor::arange(0.0, 10.0, 1.0);       // Bereichs-Tensor
let tensor = Tensor::linspace(0.0, 1.0, 100);      // Lineare Abstände
```

### Tensor-Operationen

```rust
// Arithmetische Operationen
let result = a.add(&b);                             // Elementweise Addition
let result = a.sub(&b);                             // Elementweise Subtraktion
let result = a.mul(&b);                             // Elementweise Multiplikation
let result = a.div(&b);                             // Elementweise Division
let result = a.pow(&b);                             // Elementweise Potenzierung
let result = a.rem(&b);                             // Elementweiser Rest

// Matrix-Operationen
let result = a.matmul(&b);                          // Matrix-Multiplikation
let result = a.transpose();                         // Matrix-Transposition
let result = a.dot(&b);                             // Skalarprodukt

// Mathematische Funktionen
let result = tensor.exp();                          // Exponential
let result = tensor.ln();                           // NatĂĽrlicher Logarithmus
let result = tensor.log10();                        // Logarithmus zur Basis 10
let result = tensor.sqrt();                         // Quadratwurzel
let result = tensor.abs();                          // Absolutwert
let result = tensor.sin();                          // Sinus-Funktion
let result = tensor.cos();                          // Kosinus-Funktion
let result = tensor.tan();                          // Tangens-Funktion
let result = tensor.asin();                         // Arkussinus
let result = tensor.acos();                         // Arkuskosinus
let result = tensor.atan();                         // Arkustangens
let result = tensor.sinh();                         // Hyperbolischer Sinus
let result = tensor.cosh();                         // Hyperbolischer Kosinus
let result = tensor.tanh();                         // Hyperbolischer Tangens
let result = tensor.floor();                        // Boden-Funktion
let result = tensor.ceil();                         // Decken-Funktion
let result = tensor.round();                        // Rundungs-Funktion
let result = tensor.sign();                         // Vorzeichen-Funktion
let result = tensor.max();                          // Maximalwert
let result = tensor.min();                          // Minimalwert
let result = tensor.sum();                          // Summe aller Elemente
let result = tensor.mean();                         // Mittelwert
let result = tensor.std();                          // Standardabweichung
let result = tensor.var();                          // Varianz

// Form-Manipulation
let result = tensor.reshape(vec![6, 4]);            // Tensor umformen
let result = tensor.squeeze();                      // Größe-1-Dimensionen entfernen
let result = tensor.unsqueeze(1);                   // Dimension am Index hinzufĂĽgen
let result = tensor.permute(vec![1, 0, 2]);         // Dimensionen permutieren
let result = tensor.expand(vec![10, 10, 5]);        // Tensor-Dimensionen erweitern
```

## đź§  Neural Network (nn) Modul

### Basis-Layer

```rust
use rustorch::nn::{Linear, Conv2d, BatchNorm1d, Dropout};

// Linearer Layer
let linear = Linear::new(784, 256)?;                // Eingabe 784, Ausgabe 256
let output = linear.forward(&input)?;

// Faltungs-Layer
let conv = Conv2d::new(3, 64, 3, None, Some(1))?; // in_channels=3, out_channels=64, kernel_size=3
let output = conv.forward(&input)?;

// Batch-Normalisierung
let bn = BatchNorm1d::new(256)?;
let normalized = bn.forward(&input)?;

// Dropout
let dropout = Dropout::new(0.5)?;
let output = dropout.forward(&input, true)?;       // training=true
```

### Aktivierungsfunktionen

```rust
use rustorch::nn::{ReLU, Sigmoid, Tanh, LeakyReLU, ELU, GELU};

// Grundlegende Aktivierungsfunktionen
let relu = ReLU::new();
let sigmoid = Sigmoid::new();
let tanh = Tanh::new();

// Parametrisierte Aktivierungsfunktionen
let leaky_relu = LeakyReLU::new(0.01)?;
let elu = ELU::new(1.0)?;
let gelu = GELU::new();

// Anwendungsbeispiel
let activated = relu.forward(&input)?;
```

## 🚀 GPU-Beschleunigungs-Modul

### Geräteverwaltung

```rust
use rustorch::gpu::{Device, get_device_count, set_device};

// Verfügbare Geräte prüfen
let device_count = get_device_count()?;
let device = Device::best_available()?;            // Bestes Gerät auswählen

// Gerätekonfiguration
set_device(&device)?;

// Tensor zu GPU bewegen
let gpu_tensor = tensor.to_device(&device)?;
```

### CUDA-Operationen

```rust
#[cfg(feature = "cuda")]
use rustorch::gpu::cuda::{CudaDevice, memory_stats};

// CUDA-Geräteoperationen
let cuda_device = CudaDevice::new(0)?;              // GPU 0 verwenden
let stats = memory_stats(0)?;                      // Speicher-Statistiken
println!("Verwendeter Speicher: {} MB", stats.used_memory / (1024 * 1024));
```

## 🎯 Optimierer (Optim) Modul

### Basis-Optimierer

```rust
use rustorch::optim::{Adam, SGD, RMSprop, AdamW};

// Adam-Optimierer
let mut optimizer = Adam::new(vec![x.clone(), y.clone()], 0.001, 0.9, 0.999, 1e-8)?;

// SGD-Optimierer
let mut sgd = SGD::new(vec![x.clone()], 0.01, 0.9, 1e-4)?;

// Optimierungsschritt
optimizer.zero_grad()?;
// ... Vorwärtsberechnung und Rückpropagation ...
optimizer.step()?;
```

## đź“– Anwendungsbeispiel

### Lineare Regression

```rust
use rustorch::{tensor::Tensor, nn::Linear, optim::Adam, autograd::Variable};

// Datenvorbereitung
let x = Variable::new(Tensor::randn(vec![100, 1]), false)?;
let y = Variable::new(Tensor::randn(vec![100, 1]), false)?;

// Modelldefinition
let mut model = Linear::new(1, 1)?;
let mut optimizer = Adam::new(model.parameters(), 0.001, 0.9, 0.999, 1e-8)?;

// Trainingsschleife
for epoch in 0..1000 {
    optimizer.zero_grad()?;
    let pred = model.forward(&x)?;
    let loss = (pred - &y).pow(&Tensor::from(2.0))?.mean()?;
    backward(&loss, true)?;
    optimizer.step()?;
    
    if epoch % 100 == 0 {
        println!("Epoche {}: Verlust = {:.4}", epoch, loss.item::<f32>()?);
    }
}
```

## ⚠️ Bekannte Einschränkungen

1. **GPU-Speicher-Beschränkung**: Explizite Speicherverwaltung erforderlich für große Tensoren (>8GB)
2. **WebAssembly-Beschränkung**: Einige BLAS-Operationen nicht verfügbar in WASM-Umgebung
3. **Verteiltes Lernen**: NCCL-Backend nur unter Linux unterstĂĽtzt
4. **Metal-Beschränkung**: Einige erweiterte Operationen nur mit CUDA-Backend verfügbar

## đź”— Verwandte Links

- [Haupt-README](../README.md)
- [WASM API Dokumentation](WASM_API_DOCUMENTATION.md)
- [Jupyter-Leitfaden](jupyter-guide.md)
- [GitHub Repository](https://github.com/JunSuzukiJapan/RusTorch)
- [Crates.io Paket](https://crates.io/crates/rustorch)

---

**Letztes Update**: v0.5.15 | **Lizenz**: MIT | **Autor**: Jun Suzuki