如何在 PyBrain 中使用函数 normalize()?

Posted

技术标签:

【中文标题】如何在 PyBrain 中使用函数 normalize()?【英文标题】:How to use function normalize() in PyBrain? 【发布时间】:2016-06-28 18:50:45 【问题描述】:

我需要在训练之前对我的数据进行标准化。在 pybrain.rl.environments.task 中有一个函数normalize()。但我没有尝试,不起作用,只有错误。无法调用训练数据的函数。

from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure import TanhLayer
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import RPropMinusTrainer
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.structure.networks import Network
from pybrain.rl.environments.task import Task
import numpy as np

ds = SupervisedDataSet(3, 1)

ds.addSample( (76.7, 13.8, 103.0), 770)
ds.addSample( (70.9, 13.0, 92.0), 650)
ds.addSample( (65.6, 15.9, 104.3), 713)
ds.addSample( (59.3, 14.8, 88.0), 593)
ds.addSample( (50.0, 13.0, 65.2), 443)
ds.addSample( (44.9, 17.6, 79.0), 547)
ds.addSample( (44.3, 18.4, 78.6), 553)
ds.addSample( (44.4, 18.4, 81.8), 576)

#create object for training data
test = Task(ds)

#set the normalization limits from 0 to 1
test.setScaling([(0, 1)], None)

#function call(problem here, I tried a lot of options for a function call, but none worked)
test.normalize((0, 1))

net = buildNetwork(ds.indim, 3, ds.outdim, bias = True, hiddenclass=TanhLayer)

trainer = BackpropTrainer(net, dataset=ds, verbose=False, learningrate = 0.01, momentum = 0.99)

trainer.trainOnDataset(ds,100)
trainer.testOnData(verbose=False)

我不明白我应该在函数的规范化中传递什么以及如何传递以使其正常工作。

【问题讨论】:

【参考方案1】:

我知道这已经很晚了,但我猜here 是我发现的。似乎 setScaling 在参数 sensor_limits 中接收到要标准化的维度中的 min-max 元组:

def setScaling(self, sensor_limits, actor_limits):
    self.sensor_limits = sensor_limits
    self.actor_limits = actor_limits

另一方面, normalize() 接收参数传感器中的实际尺寸,并使用 sensor_limits 中指定的元组(最小-最大)进行计算:

for l, s in zip(self.sensor_limits, sensors):
    if not l:
        result.append(s)
    else:
        result.append((s - l[0]) / (l[1] - l[0]) * 2 - 1.0)

【讨论】:

以上是关于如何在 PyBrain 中使用函数 normalize()?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pybrain 等外部 python 库在 cython 中编译我的 python 代码

训练 LSTM 神经网络以预测 pybrain、python 中的时间序列

如何使用 pybrain 黑盒优化训练神经网络以监督数据集?

PyBrain - 如何根据测试数据验证我训练有素的网络?

使用 LSTM 循环网络的 Pybrain 时间序列预测

使用 PyBrain 进行神经网络训练不会收敛