def test_answer(self): filepath = './test.h5' # 数据为随机产生, 不具有任何实际意义. _temp_arr = np.random.rand(3, 4) # 创建并写入 w_parameters_gp = io.initialize_weights_file(filepath, mode='w', model_name='test') w_compile_ds = w_parameters_gp['compile'] w_weights_ds = w_parameters_gp['weights'] w_compile_ds.attrs['module'] = 'classicML' w_compile_ds.attrs['cml_version'] = io.cml_version w_compile_ds.attrs['__version__'] = io.__version__ w_weights_ds.attrs['weights'] = _temp_arr # 读取并核验 r_parameters_gp = io.initialize_weights_file(filepath, mode='r', model_name='test') r_compile_ds = r_parameters_gp['compile'] r_weights_ds = r_parameters_gp['weights'] assert 'classicML' == r_compile_ds.attrs['module'] assert io.cml_version == r_compile_ds.attrs['cml_version'] assert io.__version__ == r_compile_ds.attrs['__version__'] assert _temp_arr.all() == r_weights_ds.attrs['weights'].all() if os.path.exists(filepath): os.remove(filepath)
def save_weights(self, filepath): """将模型权重保存为一个HDF5文件. Arguments: filepath: str, 权重文件保存的路径. Raises: TypeError: 模型权重保存失败. Notes: 模型将不会保存关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='w', model_name='AveragedOneDependentEstimator') # 保存模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] compile_ds.attrs['smoothing'] = self.smoothing compile_ds.attrs['m'] = self.m weights_ds.attrs['_attribute_list'] = np.void( dumps(self._attribute_list)) except TypeError: CLASSICML_LOGGER.error('模型权重保存失败, 请检查文件是否损坏') raise TypeError('模型权重保存失败')
def load_weights(self, filepath): """加载模型参数. Arguments: filepath: str, 权重文件加载的路径. Raises: KeyError: 模型权重加载失败. Notes: 模型将不会加载关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='r', model_name='AveragedOneDependentEstimator') # 加载模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] self.smoothing = compile_ds.attrs['smoothing'] self.m = compile_ds.attrs['m'] self._attribute_list = loads( weights_ds.attrs['_attribute_list'].tobytes()) # 标记加载完成 self.is_loaded = True except KeyError: CLASSICML_LOGGER.error('模型权重加载失败, 请检查文件是否损坏') raise KeyError('模型权重加载失败')
def save_weights(self, filepath): """将模型权重保存为一个HDF5文件. Arguments: filepath: str, 权重文件保存的路径. Raises: TypeError: 模型权重保存失败. References: - [如何存储原始的二进制数据](https://docs.h5py.org/en/2.3/strings.html) Notes: 模型将不会保存关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='w', model_name='DecisionTreeClassifier') # 保存模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] compile_ds.attrs['criterion'] = self.criterion if self.pruner is not None: compile_ds.attrs['pruning'] = self.pruner.name weights_ds.attrs['tree'] = np.void(dumps(self.tree)) except TypeError: CLASSICML_LOGGER.error('模型权重保存失败, 请检查文件是否损坏') raise TypeError('模型权重保存失败')
def load_weights(self, filepath): """加载模型参数. Arguments: filepath: str, 权重文件加载的路径. Raises: KeyError: 模型权重加载失败. Notes: 模型将不会加载关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='r', model_name='DecisionTreeClassifier') # 加载模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] self.criterion = compile_ds.attrs['criterion'] if self.pruner is not None: self.pruner = get_pruner(compile_ds.attrs['pruning']) self.tree = loads(weights_ds.attrs['tree'].tobytes()) # 标记加载完成 self.is_loaded = True except KeyError: CLASSICML_LOGGER.error('模型权重加载失败, 请检查文件是否损坏') raise KeyError('模型权重加载失败')
def save_weights(self, filepath): """将模型权重保存为一个HDF5文件. Arguments: filepath: str, 权重文件保存的路径. Raises: TypeError: 模型权重保存失败. Notes: 模型将不会保存关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='w', model_name='LogisticRegression') # 保存模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] compile_ds.attrs['optimizer'] = self.optimizer.name compile_ds.attrs['loss'] = self.loss.name compile_ds.attrs['metric'] = self.metric.name weights_ds.attrs['beta'] = self.beta except TypeError: CLASSICML_LOGGER.error('模型权重保存失败, 请检查文件是否损坏') raise TypeError('模型权重保存失败')
def load_weights(self, filepath): """加载模型参数. Arguments: filepath: str, 权重文件加载的路径. Raises: KeyError: 模型权重加载失败. Notes: 模型将不会加载关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='r', model_name='LogisticRegression') # 加载模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] self.optimizer = get_optimizer(compile_ds.attrs['optimizer']) self.loss = get_loss(compile_ds.attrs['loss']) self.metric = get_metric(compile_ds.attrs['metric']) self.beta = weights_ds.attrs['beta'] # 标记加载完成 self.is_loaded = True except KeyError: CLASSICML_LOGGER.error('模型权重加载失败, 请检查文件是否损坏') raise KeyError('模型权重加载失败')
def save_weights(self, filepath): """将模型权重保存为一个HDF5文件. Arguments: filepath: str, 权重文件保存的路径. Raises: TypeError: 模型权重保存失败. Notes: 模型将不会保存关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='w', model_name='SupportVectorClassifier') # 保存模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] compile_ds.attrs['C'] = self.C compile_ds.attrs['kernel'] = self.kernel.name compile_ds.attrs['gamma'] = self.gamma compile_ds.attrs['tol'] = self.tol weights_ds.attrs['support'] = self.support weights_ds.attrs['support_vector'] = self.support_vector weights_ds.attrs['support_alpha'] = self.support_alpha weights_ds.attrs['support_y'] = np.asarray(self.support_y, dtype=np.float64) weights_ds.attrs['b'] = np.float64(self.b) except TypeError: CLASSICML_LOGGER.error('模型权重保存失败, 请检查文件是否损坏') raise TypeError('模型权重保存失败')
def load_weights(self, filepath): """加载模型参数. Arguments: filepath: str, 权重文件加载的路径. Raises: KeyError: 模型权重加载失败. Notes: 模型将不会加载关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='r', model_name='SupportVectorClassifier') # 加载模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] self.C = compile_ds.attrs['C'] self.gamma = compile_ds.attrs['gamma'] self.kernel = get_kernel(compile_ds.attrs['kernel'], self.gamma) self.tol = compile_ds.attrs['tol'] self.support = weights_ds.attrs['support'] self.support_vector = weights_ds.attrs['support_vector'] self.support_alpha = weights_ds.attrs['support_alpha'] self.support_y = weights_ds.attrs['support_y'] self.b = weights_ds.attrs['b'] # 标记加载完成 self.is_loaded = True except KeyError: CLASSICML_LOGGER.error('模型权重加载失败, 请检查文件是否损坏') raise KeyError('模型权重加载失败')
def save_weights(self, filepath): """将模型权重保存为一个HDF5文件. Arguments: filepath: str, 权重文件保存的路径. Raises: TypeError: 模型权重保存失败. Notes: 模型将不会保存关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='w', model_name='RadialBasisFunctionNetwork') # 保存模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] compile_ds.attrs['hidden_units'] = self.hidden_units compile_ds.attrs['optimizer'] = self.optimizer.name compile_ds.attrs['loss'] = self.loss.name compile_ds.attrs['metric'] = self.metric.name for parameter in self.parameters: weights_ds.attrs[parameter] = self.parameters[parameter] except TypeError: CLASSICML_LOGGER.error('模型权重保存失败, 请检查文件是否损坏') raise TypeError('模型权重保存失败')
def load_weights(self, filepath): """加载模型参数. Arguments: filepath: str, 权重文件加载的路径. Raises: KeyError: 模型权重加载失败. Notes: 模型将不会加载关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='r', model_name='RadialBasisFunctionNetwork') # 加载模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] self.hidden_units = compile_ds.attrs['hidden_units'] self.optimizer = get_optimizer(compile_ds.attrs['optimizer']) self.loss = get_loss(compile_ds.attrs['loss']) self.metric = get_metric(compile_ds.attrs['metric']) for attr in weights_ds.attrs: self.parameters[attr] = weights_ds.attrs[attr] # 标记加载完成 self.is_loaded = True except KeyError: CLASSICML_LOGGER.error('模型权重加载失败, 请检查文件是否损坏') raise KeyError('模型权重加载失败')
def save_weights(self, filepath): """将模型权重保存为一个HDF5文件. Arguments: filepath: str, 权重文件保存的路径. Raises: TypeError: 模型权重保存失败. Notes: 模型将不会保存关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='w', model_name='NaiveBayesClassifier') # 保存模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] compile_ds.attrs['smoothing'] = self.smoothing weights_ds.attrs['p_0'] = self.p_0 weights_ds.attrs['p_1'] = self.p_1 weights_ds.attrs['pi_0'] = np.void(dumps(self.pi_0)) weights_ds.attrs['pi_1'] = np.void(dumps(self.pi_1)) except TypeError: CLASSICML_LOGGER.error('模型权重保存失败, 请检查文件是否损坏') raise TypeError('模型权重保存失败')
def load_weights(self, filepath): """加载模型参数. Arguments: filepath: str, 权重文件加载的路径. Raises: KeyError: 模型权重加载失败. Notes: 模型将不会加载关于优化器的超参数. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file( filepath=filepath, mode='r', model_name='NaiveBayesClassifier') # 加载模型参数. try: compile_ds = parameters_gp['compile'] weights_ds = parameters_gp['weights'] self.smoothing = compile_ds.attrs['smoothing'] self.p_0 = weights_ds.attrs['p_0'] self.p_1 = weights_ds.attrs['p_1'] self.pi_0 = loads(weights_ds.attrs['pi_0'].tobytes()) self.pi_1 = loads(weights_ds.attrs['pi_1'].tobytes()) # 标记加载完成 self.is_loaded = True except KeyError: CLASSICML_LOGGER.error('模型权重加载失败, 请检查文件是否损坏') raise KeyError('模型权重加载失败')
def save_weights(self, filepath): """将模型权重保存为一个HDF5文件. Arguments: filepath: str, 权重文件保存的路径. Raises: TypeError: 模型权重保存失败. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file(filepath=filepath, mode='w', model_name='LinearDiscriminantAnalysis') # 保存模型参数. try: weights_ds = parameters_gp['weights'] weights_ds.attrs['w'] = self.w weights_ds.attrs['mu_0'] = self.mu_0 weights_ds.attrs['mu_1'] = self.mu_1 except TypeError: CLASSICML_LOGGER.error('模型权重保存失败, 请检查文件是否损坏') raise TypeError('模型权重保存失败')
def load_weights(self, filepath): """加载模型参数. Arguments: filepath: str, 权重文件加载的路径. Raises: KeyError: 模型权重加载失败. """ # 初始化权重文件. parameters_gp = io.initialize_weights_file(filepath=filepath, mode='r', model_name='LinearDiscriminantAnalysis') # 加载模型参数. try: weights_ds = parameters_gp['weights'] self.w = weights_ds.attrs['w'] self.mu_0 = weights_ds.attrs['mu_0'] self.mu_1 = weights_ds.attrs['mu_1'] # 标记加载完成 self.is_loaded = True except KeyError: CLASSICML_LOGGER.error('模型权重加载失败, 请检查文件是否损坏') raise KeyError('模型权重加载失败')