神经网络 - 输入值

agn*_*zka 23 neural-network

我有一个可能微不足道的问题,但在我看过的任何地方都没有描述.我正在研究神经网络,我看到的是一些理论和一些简单的例子,其中有一些0和1作为输入.我想知道:我是否只需要将一个值作为一个神经元的输入值,或者它可以是一个矢量,比方说,3个值(例如RGB颜色)?

zer*_*ord 11

上述答案在技术上是正确的,但不解释简单的事实:从来没有一种情况需要给单个神经元提供一个数字向量.

从实际情况来看,这是因为(作为较早的解决方案之一显示),你可以有一个向量中每个数字神经元,然后有所有这些是输入到单个神经元.这可以在训练后获得您想要的行为,因为第二层神经元可以有效地利用整个矢量.

从数学角度来看,存在编码理论的基本定理,其表明任何数字向量都可以表示为单个数字.因此,如果您真的不想要额外的神经元层,您可以简单地将RGB值编码为单个数字并将其输入神经元.虽然,这种编码功能可能会使大多数学习问题变得更加困难,所以我怀疑这种解决方案在大多数情况下是值得的.

总结:使用人工神经网络而不向输入单元提供矢量,但由于这个原因而没有失去计算能力.


Jul*_*urg 7

在处理多维数据时,我相信一个双层神经网络被认为可以提供更好的结果.

在你的情况下:

R[0..1] => (N1)----\
                    \
G[0..1] => (N2)-----(N4) => Result[0..1]
                    /
B[0..1] => (N3)----/
Run Code Online (Sandbox Code Playgroud)

如您所见,N4神经元可以处理3个条目.

[0..1]间隔是一个惯例,但是一个好的imo.这样,您可以轻松编写一组可以接受任意数量条目的通用神经元类(我有模板C++类,其中条目数作为模板参数个人).因此,您需要对神经元的逻辑进行一次编码,然后使用神经元内的网络结构和/或功能组合来玩具.


Bra*_*ann 1

它可以是任何你想要的,只要你相应地编写你的内部函数。

\n\n

您提到的示例使用 [0;1] 作为其域,但您可以使用 R、R\xc2\xb2 或任何您想要的内容,只要您在神经元中使用的函数是在此域上定义的即可。

\n\n

在您的情况下,您可以在 R3 上定义函数以允许处理 RGB 值

\n\n

一个简单的例子:使用 (x1, y1, z1),(x2,y2,z2)->(ax1+x2,by1+y2,cz1+z2) 作为将两种颜色转换为一种颜色的函数, ab 和 c 是你的学习系数,您将在学习阶段确定。

\n\n

维基百科上提供了非常详细的信息(包括问题的答案)。

\n