You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从MLPRegressor提取激活函数及自编码器降维技术问询

嘿,我来帮你搞定从MLPRegressor里提取激活函数的问题,顺便结合你用Hinton那篇论文的自编码器做降维的场景说清楚细节~

提取MLPRegressor的激活函数

1. 获取激活函数的名称(字符串形式)

如果你只是想确认训练时用的激活函数是什么,直接访问模型的activation属性就行:

# 输出激活函数名称,比如'relu'、'sigmoid'等
print(m_ann.activation)

2. 获取可调用的激活函数对象

要是你需要实际调用激活函数(比如手动实现前向传播,拆分网络得到中间2节点的二维特征),可以用sklearn内部的ACTIVATIONS字典来映射:

from sklearn.neural_network._base import ACTIVATIONS

# 获取和训练时完全一致的激活函数
activation_func = ACTIVATIONS[m_ann.activation]

结合你的自编码器降维场景:手动生成二维特征

既然你要拆分自编码器取中间层输出,这里给你完整的代码示例,用提取到的激活函数来实现前向传播:

import numpy as np
from sklearn.neural_network._base import ACTIVATIONS

# 提取模型的权重和偏置(你的网络结构是(4,2,4),所以前两层是输入→4节点→2节点)
# 输入层到第一个隐藏层(4节点)的权重和偏置
w1, b1 = m_ann.coefs_[0], m_ann.intercepts_[0]
# 第一个隐藏层到中间2节点层的权重和偏置
w2, b2 = m_ann.coefs_[1], m_ann.intercepts_[1]

# 获取激活函数
activation = ACTIVATIONS[m_ann.activation]

# 定义函数生成二维降维特征
def get_latent_representation(X):
    # 第一层前向计算
    hidden1 = activation(np.dot(X, w1) + b1)
    # 第二层前向计算,得到中间2节点的输出
    latent = activation(np.dot(hidden1, w2) + b2)
    return latent

# 用法:把你的输入数据X传进去,得到二维结果
latent_data = get_latent_representation(X)
# 现在就可以用latent_data做绘图、KNN等操作啦

补充说明

  • m_ann.coefs_是一个列表,按层顺序存储权重矩阵:coefs_[0]是输入到第一个隐藏层的权重,coefs_[1]是第一个到第二个隐藏层的权重,以此类推
  • m_ann.intercepts_对应各层的偏置向量,顺序和coefs_完全匹配
  • ACTIVATIONS字典确保你用的激活函数和模型训练时完全一致,避免手动指定出错

内容的提问来源于stack exchange,提问作者Mohammad Athar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:48:19