为什么matlab神经网络分类返回十进制值



我有一个输入数据集(矩阵25x1575),它被标准化为0到1之间的值。我还有一个二进制格式的输出矩阵(9x1575),类似于0 0 0 0、0 0 0 1、1 0 1 1 0 0 1。。。

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

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

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

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

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

更新你说你使用了tanh sigmoid神经元,想知道为什么你的值不是很接近-1或1。

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

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

最新更新