ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

sklearn中MLPClassifier源码解析

2022-09-12 18:33:04  阅读:253  来源: 互联网

标签:fit MLPClassifier random bound init 源码 fan factor sklearn


神经网络

.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

标签:fit,MLPClassifier,random,bound,init,源码,fan,factor,sklearn
来源: https://www.cnblogs.com/xddisme/p/16686946.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有