Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

train - Model Eğitimi

Training loops, callbacks ve metrics tracking

4.96x
Paralel
6
Callback
18K
batch/sn

Genel Bakış

train modülü, model eğitimi için yüksek seviye API ve callback sistemi sağlar.

Basit Training Loop

kullan ai/train;
kullan ai/nn;
kullan ai/optim;

değişken trainer = Trainer::yeni(
    model: model,
    optimizer: Adam::yeni(model.parametreler(), lr: 0.001),
    loss_fn: CrossEntropyLoss::yeni()
);

değişken sonuç = trainer.eğit(
    train_loader: train_loader,
    val_loader: val_loader,
    epochs: 50
);

yazdir("En iyi doğruluk: {:.2f}%", sonuç.best_acc * 100.0);

Callbacks

EarlyStopping

kullan ai/train;

değişken early_stop = EarlyStopping::yeni(
    patience: 10,          // 10 epoch dur
    min_delta: 0.001,      // Minimum iyileştirme
    mode: "min"            // Loss için 'min', acc için 'max'
);

değişken trainer = Trainer::yeni(model, optimizer, loss_fn)
    .callback_ekle(early_stop);

trainer.eğit(train_loader, val_loader, epochs: 100);
// En fazla 100 epoch, ama 10 epoch iyileşme yoksa durur

ModelCheckpoint

kullan ai/train;

değişken checkpoint = ModelCheckpoint::yeni(
    filepath: "models/best_model.berk",
    monitor: "val_acc",
    mode: "max",
    save_best_only: doğru
);

değişken trainer = Trainer::yeni(model, optimizer, loss_fn)
    .callback_ekle(checkpoint);

trainer.eğit(train_loader, val_loader, epochs: 50);
// En iyi model otomatik kaydedilir

Paralel Batch Processing

Rayon ile Paralel Eğitim

kullan ai/train;
kullan ai/tensor;

// Paralel batch inference
değişken results = batches
    .paralel_iter()
    .map(|batch| model.ileri(batch))
    .topla();

// Performans: 4,410 → 18,546 batch/sn (4.96x)

Metrics Tracking

Training Metrics

kullan ai/train;

değişken history = History::yeni();

değişken trainer = Trainer::yeni(model, optimizer, loss_fn)
    .callback_ekle(history);

trainer.eğit(train_loader, val_loader, epochs: 50);

// Metrics'e eriş
yazdir("Train loss: {:?}", history.train_loss);
yazdir("Val accuracy: {:?}", history.val_acc);

// Plot (varsa)
history.plot("training_curves.png");

Custom Training Loop

kullan ai/nn;
kullan ai/optim;

fonksiyon özel_eğitim(
    model: Model,
    train_loader: DataLoader,
    epochs: tamsayı
) yap
    değişken optimizer = Adam::yeni(model.parametreler(), lr: 0.001);
    
    her epoch içinde aralık(epochs) için yap
        değişken epoch_loss = 0.0;
        
        her (x, y) içinde train_loader için yap
            // Forward pass
            değişken pred = model.ileri(x);
            değişken loss = cross_entropy(pred, y);
            
            // Backward pass
            optimizer.sıfırla();
            loss.geri();
            optimizer.adım();
            
            epoch_loss += loss.değer();
        son
        
        yazdir("Epoch {}: Loss = {:.4f}", epoch, epoch_loss);
    son
son

API Referansı

CallbackAçıklamaKullanım
EarlyStoppingErken durdurmaOverfitting önleme
ModelCheckpointModel kaydetEn iyi modeli sakla
HistoryMetrics trackingEğitim grafiği
LearningRateMonitorLR loglaLR değişimini izle
ProgressBarİlerleme çubuğuTerminal output