【发布时间】:2015-06-06 14:34:36
【问题描述】:
因此,在您对机器学习算法进行训练后,使用您的层、节点和权重,它究竟如何获得输入向量的预测?我正在使用多层感知器(神经网络)。
根据我目前的理解,您从要预测的输入向量开始。然后你把它发送到你的隐藏层,在那里它将你的偏置项添加到每个数据点,然后将每个数据点的乘积和每个节点的权重(在训练中找到)相加,然后通过训练中使用的相同激活函数。对每个隐藏层重复此操作,然后对输出层执行相同操作。然后输出层中的每个节点都是您的预测。 这是正确的吗?
我在使用 opencv 执行此操作时感到困惑,因为在 guide 中它说当您使用函数预测时:
如果您使用默认的 cvANN_MLP::SIGMOID_SYM 激活 具有默认参数值 fparam1=0 和 fparam2=0 的函数 那么使用的函数是 y = 1.7159*tanh(2/3 * x),所以输出 范围为 [-1.7159, 1.7159],而不是 [0,1]。
但是,在训练时,文档中也说明 SIGMOID_SYM 使用激活函数:
f(x)= beta*(1-e^{-alpha x})/(1+e^{-alpha x} )
其中 alpha 和 beta 是用户定义的变量。
所以,我不太确定这意味着什么。 tanh 函数在哪里发挥作用?任何人都可以解决这个问题吗?感谢您的时间!
找到它的文档是here: 对 tanh 的引用位于函数描述 predict 下。 激活函数的参考是页面顶部的 S 形图。
由于这是一个一般性问题,而不是特定于代码的问题,因此我没有发布任何代码。
【问题讨论】:
标签: opencv machine-learning prediction perceptron multi-layer