gpt4 book ai didi

Python-sklearn.MLPClassifier : How to obtain output of the first hidden layer

转载 作者:行者123 更新时间:2023-11-30 08:58:15 25 4
gpt4 key购买 nike

我正在研究一些深度学习技术,并发现了一种不使用反向传播的方法( 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]

有没有办法获取隐藏层的结果?

最佳答案

你误解了什么是什么。

输入是您传入的内容。

第一个隐藏层由模型参数 W1 和 b1 组成。

隐藏层的输出为 f(W1Tx + b1) 其中 f是你的激活函数。

这是第二个隐藏层的输入,由模型参数 W2 和 b2 组成。就这样......

所以,准确地说

from sklearn.neural_network._base import ACTIVATIONS
ACTIVATIONS['relu'](np.matmul(data, mlp.coefs_[0]) + mlp.intercepts_[0]))

这就是您要找的。

关于Python-sklearn.MLPClassifier : How to obtain output of the first hidden layer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50869405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com