【发布时间】:2018-06-15 05:07:36
【问题描述】:
我在学习一些深度学习技术时遇到了一种不使用反向传播的方法 (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]
有没有办法获取隐藏层的结果?
【问题讨论】:
标签: python machine-learning scikit-learn