如何在c ++中处理人工神经网络的多个输入

时间:2013-01-07 20:09:18

标签: c++ artificial-intelligence neural-network

C ++如何实时处理人工神经网络的多个输入?

我假设这不是使用尖峰神经网络,而是更传统的神经网络(即这里描述的基本神经网络)

http://www.ai-junkie.com/ann/evolved/nnt1.html

这在实时世界中是否可行?我原本以为必须单独处理每个输入(这将始终导致相同的输出,因此是dilemna),或者每个时间阈值产生一定数量的输入,然后立即处理它们......

然后,有人对同一输入的多个实例做了什么?处理两次?

我问这个是因为我在看神经机器人,我认为它使用的是普通的神经网络,但是在我钻研它之前我想先了解ANN,并且不确定ANN在处理之前如何处理多个输入目标输出。

1 个答案:

答案 0 :(得分:0)

你的问题不是很清楚,但我会尽力回答。 :)

您可以看到ANN(人工神经网络),就像自适应滤波器的特定情况一样。

A diagram for a general AF

有三个主要元素:

  1. 输入x(n)的序列
  2. 参数变量过滤器。在这种情况下,过滤器是ANN,参数是神经元的权重。
  3. 更新算法,根据所需实际输出之间的误差更新滤波器参数。在ANN中,最常用的更新算法是Backpropagation Algorithm
  4. 在ANN中有两个步骤:

    • 培训步骤。这是困难的部分。你从随机神经元权重开始。您有一系列输入及其所需的输出,您可以使用更新算法运行ANN。当误差低于某个阈值时,您可以说您的ANN已经过训练。此步骤通常是离线(不是实时)。

    • 执行步骤。你有训练有素的ANN。现在只需将按顺序输入其中并使用输出。这通常是一个快速的操作,可以实时完成(如果这是你的意思)。

    现在..你对“多次输入”的意思是什么?首先,标准计算机一次只能进行非常少量的操作,标准PC具有4/8核心,因此可以一次进行近4-8次操作。对于每个真实世界的ANN应用,这个数字太低了。

    你说:

      

    有人对同一输入的多个实例做了什么?处理两次?

    答案是。 “执行步骤”如此之快,以至于没有理由不这样做。在“训练步骤”中,可以在训练开始之前移除重复输入(因为训练输入已知先验)。所以这没有问题。 :)