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
posted @   小兜兜me  阅读(288)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示