示例#1
0
    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 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 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,
                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)
示例#5
0
    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)
    def __init__(self, seed=None):
        """初始化分类器.

        Arguments:
            seed: int, default=None,
                随机种子.
        """
        super(SupportVectorClassifier, self).__init__()
        self.seed = np.random.seed(seed)

        self.support = None
        self.support_vector = None
        self.support_alpha = None
        self.support_y = None
        self.b = 0

        self.C = None
        self.kernel = None
        self.gamma = None
        self.tol = None
        self.epochs = None
        self.optimizer = get_optimizer('SMO')
        self.is_trained = False
        self.is_loaded = False