In [1]:
from os import environ
environ['optimizer'] = 'Adam'
environ['num_workers']= '2'
environ['batch_size']= str(2048)
environ['n_epochs']= '1000'
environ['batch_norm']= 'True'
environ['loss_func']='MAPE'
environ['layers'] = '500 300 120 80 30'
environ['dropouts'] = '0.2'+' 0.3'*4
environ['log'] = 'False'
environ['weight_decay'] = '0.01'
environ['cuda_device'] ='cuda:1'
environ['dataset'] = 'data/blur2d.pkl'
%run utils.ipynb
In [2]:
ds = DatasetFromPkl(dataset, maxsize=None, log=log)
dl = DataLoader(ds, batch_size=batch_size,
sampler=SubsetRandomSampler(range(len(ds))),
num_workers=num_workers)
db = fai.basic_data.DataBunch(dl, dl, device=device)
train_dl = dl
In [13]:
input_size = train_dl.dataset.X.shape[1]
output_size = train_dl.dataset.Y.shape[1]
model = None
if batch_norm:
model = Model_BN(input_size, output_size, hidden_sizes=layers_sizes, drops=drops)
else:
model = Model(input_size, output_size)
if loss_func == 'MSE':
criterion = nn.MSELoss()
else:
criterion = mape_criterion
l = fai.Learner(db, model, loss_func=criterion, metrics=[mape_criterion, rmse_criterion],
callback_fns=[partial(EarlyStoppingCallback, mode='min',
monitor='mape_criterion', min_delta=0.1, patience=500)])
if optimizer == 'SGD':
l.opt_func = optim.SGD
In [14]:
lr = 1e-03
In [15]:
l.fit_one_cycle(50, lr)
In [16]:
l.recorder.plot_losses()
In [17]:
l.recorder.plot_lr()
In [19]:
l = l.load(f"training_tuning")
In [22]:
train_df = get_results_df(train_dl, l.model)
df = train_df
In [28]:
df.head()
Out[28]:
In [32]:
In [53]:
ds.schedules[3].schedule_list
Out[53]:
In [27]:
Out[27]:
In [ ]: