如何从MLPClassifier获取最终权重与偏置?coefs_和intercepts_属性疑问
MLPClassifier的coefs_、intercepts_属性及初始/最终权重获取
首先明确:MLPClassifier的coefs_和intercepts_属性存储的是训练完成后的最终权重与偏置值,并非初始值。
如何获取初始权重与偏置?
scikit-learn没有直接提供获取初始权重的公开属性,但可以通过以下方式实现:
方法一:利用max_iter=0初始化模型
创建模型时固定random_state保证可复现,设置max_iter=0,此时调用fit()方法只会完成模型结构初始化,不会执行训练迭代,此时的coefs_和intercepts_就是初始值。示例代码:from sklearn.neural_network import MLPClassifier import numpy as np # 初始化模型,固定随机种子,设置max_iter=0 mlp = MLPClassifier(hidden_layer_sizes=(10,), random_state=42, max_iter=0) # 传入样本触发初始化 X = np.random.rand(10, 5) y = np.random.randint(0, 2, 10) mlp.fit(X, y) # 获取初始权重和偏置 initial_coefs = mlp.coefs_ initial_intercepts = mlp.intercepts_方法二:自定义子类记录初始值
继承MLPClassifier类,重写初始化相关方法,在权重生成时直接记录初始值,这种方式更稳定,避免依赖内部方法的变动风险。
如何获取最终权重与偏置?
模型训练完成后,直接访问coefs_和intercepts_属性即可:
# 正常训练模型 mlp = MLPClassifier(hidden_layer_sizes=(10,), random_state=42) mlp.fit(X, y) # 获取最终权重和偏置 final_coefs = mlp.coefs_ final_intercepts = mlp.intercepts_
其中coefs_是列表结构,每个元素对应一层的权重矩阵;intercepts_同样是列表,每个元素对应一层的偏置向量。
内容的提问来源于stack exchange,提问作者PaulS
相关产品推荐
相关产品推荐

