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

Python 如何在PyBrain中使用函数normalize()?,python,neural-network,normalization,pybrain,Python,Neural Network,Normalization,Pybrain,我需要在训练前规范化我的数据。在pybrain.rl.environments.task中有一个函数。但我没有尝试,没有工作,只有错误。无法调用培训数据的函数 from pybrain.tools.shortcuts import buildNetwork from pybrain.structure import TanhLayer from pybrain.datasets import SupervisedDataSet from pybrain.supervised.trainers i

我需要在训练前规范化我的数据。在pybrain.rl.environments.task中有一个函数。但我没有尝试,没有工作,只有错误。无法调用培训数据的函数

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)

我不明白我应该通过什么以及如何对函数进行规范化才能使其正常工作。

我知道这已经很晚了,但我想这就是我发现的。似乎setScaling在参数sensor_limits中接收要规格化的维度中的最小-最大元组:

def setScaling(self, sensor_limits, actor_limits):
    self.sensor_limits = sensor_limits
    self.actor_limits = actor_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)
另一方面,normalize()接收参数sensors中的实际维度,并使用sensor_limits中指定的元组(min max)进行计算:

def setScaling(self, sensor_limits, actor_limits):
    self.sensor_limits = sensor_limits
    self.actor_limits = actor_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)