PyBrain addSample 多维数组

PyBrain addSample multi-dimensional array

在所有示例中,addSample(input, target) 似乎都与一维数组一起使用,例如:

INPUT = 5
OUTPUT = 1

input = [5, 5, 5, 5, 5]
target = [1]

ds = SequentialDataSet(5, 1)
#add data using addSample

当输入是多维的时候如何做到这一点:

input = [[5, 5, 5, 5, 5], [5, 5, 5, 5, 5]]
target = [1]

如何使用具有此类结构的 addSample?我试过这个:

ds = SequentialDataSet(2, 1)
ds.addSample(input, target)

并得到错误信息:

Could not broadcast input array from shape (2, 5) into shape 2.

意味着 SequentialDataSet(2, 1) 不适用于此结构,但 SequentialDataSet((2, 5), 1) 也会出错。这应该很容易,但我找不到答案。

看起来您正在尝试训练某种前馈网络,也许是多层感知器? 5 层,一个或多个隐藏层,以及一个输出层,但尚不清楚,所以这是我的飞跃。

无论哪种方式,您的输入层都应该是单个数组。如果您有结构或多维数组,则需要折叠它并将其作为一组数据输入。因此,对于您的 5x2 建议,您只需在输入中包含 10 个元素,并且您将负责 "parsing" 您的输入结构在输入网络时始终如一。对于 5x5 结构,您将有 25 个输入等。

根据我的经验,success/challenge 使用 ANN 的很大一部分是构建数据,以便对输入形式进行规范化并以网络可以在数学上找到模式的方式表示。

根据下面链接的 post 你应该只输入一个数组:

Pybrain multi dimensional data input

对于 SequentialDataSet,我使用了这个例子:

data = [(1,2), (1,3), (10,2), (2,0), (2,9), (4,3), (1,2), (10,5)]
ds = SequentialDataSet(2,2)
for sample, next_sample in zip(data, cycle(test_data[1:])):
   ds.addSample(sample, next_sample)