python - Python - sklearn.MLPClassifier:如何获得第一个隐藏层的输出
问题描述
我正在学习一些深度学习技术,并遇到了一种不使用反向传播的方法(https://arxiv.org/abs/1706.02480)。该方法的基本思想是训练浅单隐藏层,丢弃输出层,在训练好的(第一个)隐藏层和新的输出层之间增加一个隐藏层。重复该过程(添加和训练),直到满足某些标准。我正在尝试使用 sklearn 中提供的 MLP 分类器来实现此方法。我面临的问题是如何获得隐藏层的输出。例如,如果我使用
mlp = MLPClassifier()
mlp.predict(data)
,它会给我整个网络的输出。但是,我需要的是网络隐藏层的子输出。为了显示:
输入--> 连接1(权重)--> 隐藏层--> 连接2(权重)--> 输出(--> 预测)
我目前需要的不是输出预测,而是来自隐藏层(隐藏层和连接 2 之间)的结果。我知道隐藏层(connection1 和隐藏层之间)的输入可以通过
np.matmul(data, mlp.coefs_[0]) + mlp.intercepts_[0]
有没有办法获得隐藏层的结果?
解决方案
你误解了什么是什么。
输入就是你传入的内容。
第一个隐藏层由模型参数 W 1和 b 1组成。
隐藏层的输出是 f(W 1 T x + b 1 ),其中f
是您的激活函数。
然后这是第二个隐藏层的输入,该隐藏层由模型参数 W 2和 b 2组成。就这样……
所以,准确的说
from sklearn.neural_network._base import ACTIVATIONS
ACTIVATIONS['relu'](np.matmul(data, mlp.coefs_[0]) + mlp.intercepts_[0]))
就是你要找的。
推荐阅读
- collections - 卡桑德拉收藏墓碑
- python-3.x - Python pandas 排名数据框列
- php - 如何向正确的用户显示隐藏文件 - PHP
- excel - 从间接单元格复制格式
- c# - “文件不是数据库”或“未应用迁移。数据库已经是最新的了。在非默认路径中创建 Database.sqlite 时
- php - wamp 服务器 wordpress 媒体库不显示图像
- php - 使用 Doctrine orm 和 php7 连接到 Sybase 数据库
- arrays - 如何将矩阵的单层旋转 n 个位置?
- file - 有什么方法可以让 Arduino 服务器将现有的 .html 文件发送到 Arduino 客户端?
- android - java.lang.Error:致命异常 [UnityChoreographer]