def fit(epochs, model, loss_fn, opt, data, callbacks=None, metrics=None): cb_handler = CallbackHandler(callbacks) pbar = master_bar(range(epochs)) cb_handler.on_train_begin(epochs, pbar=pbar, metrics=metrics) exception = False try: for epoch in pbar: model.train() cb_handler.on_epoch_begin() for xb, yb in progress_bar(data.train_dl, parent=pbar): xb, yb = cb_handler.on_batch_begin(xb, yb) loss, _ = loss_batch(model, xb, yb, loss_fn, opt, cb_handler) if cb_handler.on_batch_end(loss): break if hasattr(data, 'valid_dl') and data.valid_dl is not None: model.eval() with torch.no_grad(): *val_metrics, nums = zip(*[ loss_batch(model, xb, yb, loss_fn, cb_handler=cb_handler, metrics=metrics) for xb, yb in progress_bar(data.valid_dl, parent=pbar) ]) val_metrics = [ np.sum(np.multiply(val, nums)) / np.sum(nums) for val in val_metrics ] else: val_metrics = None if cb_handler.on_epoch_end(val_metrics): break except Exception as e: exception = e raise e finally: cb_handler.on_train_end(exception)
def fit(epochs, model, loss_fn, opt, data, callbacks=None, metrics=None): cb_handler = CallbackHandler(callbacks) pbar = master_bar(range(epochs)) cb_handler.on_train_begin(epochs, pbar=pbar, metrics=metrics) exception = False try: for epoch in pbar: model.train() cb_handler.on_epoch_begin() for xb, yb in progress_bar(data.train_dl, parent=pbar): xb, yb = cb_handler.on_batch_begin(xb, yb) loss, _ = loss_batch(model, xb, yb, loss_fn, opt, cb_handler) if cb_handler.on_batch_end(loss): break if hasattr(data, 'valid_dl') and data.valid_dl is not None: *val_metrics, nums = validate(model, data.valid_dl, loss_fn=loss_fn, cb_handler=cb_handler, metrics=metrics, pbar=pbar) nums = np.array(nums, dtype=np.float32) val_metrics = [ (torch.stack(val).cpu().numpy() * nums).sum() / nums.sum() for val in val_metrics ] else: val_metrics = None if cb_handler.on_epoch_end(val_metrics): break except Exception as e: exception = e raise e finally: cb_handler.on_train_end(exception)
return fs.root.sheppLogans, 1, fs_counter.pop() elif choice is fj: return fj.root.jaszczak, 2, fj_counter.pop() else: raise IndexError table_phantom = F.create_table(F.root, 'phantom', Phantom, 'phantom') row_phantom = table_phantom.row choice = np.random.choice([fd, fs, fj]) fd_counter = list(range(80000)) fs_counter = list(range(80000)) fj_counter = list(range(80000)) for _ in master_bar(range(240000)): try: content, pt, i = get_content(choice) if content is fd.root.derenzo: row_phantom['phantom'] = content[i][0] row_phantom['grayscale'] = np.pad(content[i][1], (0, 20 - content[i][1].shape[0]), 'constant', constant_values=0) row_phantom['ptype'] = pt row_phantom.append() # row_ptype.append() # row_phantom.append() else: