0

我有一个输入数据集(矩阵 25x1575),它被归一化为 0 和 1 之间的值。我还有一个二进制格式的输出矩阵(9x1575),如 0 0 0 0 0 0 0 0 1、1 0 0 1 1 1 0 0 1 ...

我在 matlab nntool 中导入了这两个文件,它根据我的需要自动创建了一个具有 25 个输入和 9 个输出节点的网络。

在我使用前馈 backProp 训练这个网络之后,我在其训练数据中测试了模型,每个输出节点返回一个十进制值,如 (-0.1978 0.45913 0.12748 0.25072 0.45199 0.59368 0.38359 0.31435 1.0604)。

为什么它不返回像 1 0 0 1 1 1 0 0 1 这样的离散值?我必须在 nntool 中设置什么才能获得这样的值吗?

4

1 回答 1

1

根据神经元的性质,输出可以是任何东西。最流行的神经元是线性、S 型曲线(范围 [0, 1])和双曲正切(范围 [-1, 1])。第一个可以输出任何值。后两个 c 近似阶跃函数(即二进制行为),但由最终用户(您)定义该转换的截止值。

你没有说你使用了哪些神经元,但你绝对应该阅读更多关于神经网络是如何实现的以及它们是如何工作的。您可以从这个视频开始,然后阅读C Gershenson的《面向初学者的人工神经网络》 。

更新您说您使用 tanh-sigmoid 神经元并想知道您为什么没有得到非常接近 -1 或 1 的值。

tanh 神经元的输出是其所有输入之和的双曲正切。-1 和 1 之间的每个值都是可能的。决定输出“陡峭程度”(即:中间值的比例)的是前面神经元的输出值及其权重。这些取决于它们前面神经元的输出和它们的权重等。在给定特定输入的情况下,由学习算法来找到最小化预定义评分函数的权重集。在典型设置中,评分函数是将神经网络输出与一组所需结果进行比较并返回一个数字,该数字指示实际输出和所需输出的差异程度。

在使用 NN 之前,您必须做一些功课。至少你必须决定你的目标是什么,你如何解释神经网络的输出,你如何衡量神经网络的性能,以及你如何更新权重。

于 2014-02-24T11:03:54.083 回答