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ı
| Callback | Açıklama | Kullanım |
|---|---|---|
| EarlyStopping | Erken durdurma | Overfitting önleme |
| ModelCheckpoint | Model kaydet | En iyi modeli sakla |
| History | Metrics tracking | Eğitim grafiği |
| LearningRateMonitor | LR logla | LR değişimini izle |
| ProgressBar | İlerleme çubuğu | Terminal output |