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 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 compile(self, hidden_units, optimizer='rbf', loss='mse', metric='accuracy'): """编译径向基函数网络, 配置训练时使用的超参数. Arguments: hidden_units: int, 径向基函数网络的隐含层神经元数量. optimizer: str, classicML.optimizers.Optimizer 实例, 径向基函数网络使用的优化器. loss: str, classicML.losses.Loss 实例, default='mse' 径向基函数网络使用的损失函数. metric: str, classicML.metrics.Metric 实例, default='accuracy' 径向基函数网络使用的评估函数. Notes: - 注意RBF只能使用RadialBasisFunctionOptimizer优化器, 之所以开放优化器选项, 只是为了满足用户修改学习率的需求. - 使用交叉熵作为损失函数有潜在异常的可能性, 除隐含层神经元个数和学习率之外, 建议使用默认参数. """ self.hidden_units = hidden_units self.initializer = get_initializer('rbf_normal', self.seed) self.optimizer = get_optimizer(optimizer) self.loss = get_loss(loss) self.metric = get_metric(metric)
def compile(self, network_structure, optimizer='sgd', loss='crossentropy', metric='accuracy'): """编译神经网络, 配置训练时使用的超参数. Arguments: network_structure: list, 神经网络的结构, 定义神经网络的隐含层和输出层的神经元个数(输入层目前将自动推理); 例如: [3, 1]是一个隐含层3个神经元和输出层1个神经元的网络, [5, 5, 2]是一个有两个隐含层每层有5个神经元和输出层2个神经元的网络, optimizer: str, classicML.optimizers.Optimizer 实例, default='sgd' 神经网络使用的优化器. loss: str, classicML.losses.Loss 实例, default='crossentropy' 神经网络使用的损失函数. metric: str, classicML.metrics.Metric 实例, default='accuracy' 神经网络使用的评估函数. """ self.network_structure = network_structure self.initializer = get_initializer(self.initializer, self.seed) self.optimizer = get_optimizer(optimizer) self.loss = get_loss(loss) self.metric = get_metric(metric)
def compile(self, optimizer='newton', loss='log_likelihood', metric='accuracy'): """编译模型, 配置训练时使用的超参数. Arguments: optimizer: str, classicML.optimizers.Optimizer 实例, default='newton' 模型使用的优化器. loss: str, classicML.losses.Loss 实例, default='log_likelihood' 模型使用的损失函数. metric: str, classicML.metrics.Metric 实例, default='accuracy' 模型使用的评估函数. """ self.initializer = get_initializer(self.initializer, self.seed) self.optimizer = get_optimizer(optimizer) self.loss = get_loss(loss) self.metric = get_metric(metric)