sklearn中MLPClassifier源码解析

2022/9/13 1:23:08

本文主要是介绍sklearn中MLPClassifier源码解析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

神经网络

.fit()

首先传入类私用方法._fit()

  1. 确定hidden_layer_size是可迭代的
  2. 调用_validate_hyperparameters验证超参数是否合法
  3. 验证输入的x和y是否合法并且获取one-hot-label
  4. 从x、y中获取输入参数的信息,并且添加输入层和输出层
    (隐藏层作为参数,输入层和输出层可以从x、y中获取)
  5. 将随机种子(seed)变成np.random.RandomState实例
  6. 看一看是不是第一次训练该模型,如果是则进入_initialize方法
    1. 初始化weight和bias
    2. 初始化loss和score
# factor作为边界计算的分子
# 6.0说明是分类任务
factor = 6.0
if self.activation == "logistic":
    factor = 2.0

# fan_in、fan_out分别是这一层的输入大小和输出大小
init_bound = np.sqrt(factor / (fan_in + fan_out))

# _random_state就是第五点中根据seed实例出的对象
# uniform代表在随机生成,参数分别为下限,上限,size
# Generate weights and bias
coef_init = self._random_state.uniform(
    -init_bound, init_bound, (fan_in, fan_out)
)
intercept_init = self._random_state.uniform(-init_bound, init_bound, fan_out)
  1. 初始化权重和偏值的梯度(用numpy.empty)
  2. 训练(根据solver决定模型 _fit_stochastic 和 _fit_lbfgs)# 下次再读,到饭点了
  3. 验证权重是否合法,用np.isfinite(),检查是否出现INF,-INF和NAN


这篇关于sklearn中MLPClassifier源码解析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程