A fast SAGA-based GPU solver for L1-regularized regression.
Usage:
from fast_l1 import regressor
# loader yields (inp, targ, index), all on GPU
train_loader = ...
val_loader = ...
max_lam = regressor.calc_max_lambda(train_loader)
weight = ch.zeros(n_features, n_targets).cuda()
bias = ch.zeros(n_targets).cuda()
eps = 1e-6 # Factor btw max and min lambda
k = 100 # Number of lambdas to try
kwargs = {
# Learning rate
'lr': 0.01,
# Starting lambdas
'start_lams': max_lam,
# How much to decay lambda by upon convergence
'lam_decay': np.exp(np.log(eps)/k),
# Number of lambdas to try
'num_lambdas': k,
# How often to evaluate on test set
'early_stop_freq': 5,
# Threshold for optimizer convergence
'early_stop_eps': 5e-10,
# Logging directory
'logdir': LOG_DIR
}
regressor.train_saga(weight,
bias,
train_loader,
val_loader,
**kwargs)
Any questions? Open an issue or email datamodels@mit.edu.