def save_model(self, net): """Save the model. This function saves some or all of the following: - model parameters; - optimizer state; - criterion state; - training history; - custom modules; - entire model object. """ kwargs_module, kwargs_other = _check_f_arguments( self.__class__.__name__, **self._f_kwargs()) for key, val in kwargs_module.items(): if val is None: continue f = self._format_target(net, val, -1) key = key[:-1] # remove trailing '_' self._save_params(f, net, 'f_' + key, key + " state") f_history = kwargs_other.get('f_history') if f_history is not None: f = self.f_history_ self._save_params(f, net, "f_history", "history") f_pickle = kwargs_other.get('f_pickle') if f_pickle: f_pickle = self._format_target(net, f_pickle, -1) with open_file_like(f_pickle, 'wb') as f: pickle.dump(net, f)
def _validate_filenames(self): """Checks if passed filenames are valid. Specifically, f_* parameter should not be passed in conjunction with dirname. """ _check_f_arguments(self.__class__.__name__, **self._f_kwargs()) if not self.dirname: return def _is_truthy_and_not_str(f): return f and not isinstance(f, str) if any(_is_truthy_and_not_str(val) for val in self._f_kwargs().values()): raise SkorchException( 'dirname can only be used when f_* are strings')