【发布时间】:2016-04-22 09:01:16
【问题描述】:
我正在尝试为 100 个样本构建一个代理模型。我有两个输入和两个响应,所有这些都用它们各自最大值的大小进行归一化。
标准化:
for i in range(0, len(array(self.samples)[0])):
self.max_samples.append(abs(self.samples[:,i].max()))
self.samples[:,i] /= self.max_samples[-1]
self.minmax_samples.append([self.samples[:,i].min(), self.samples[:,i].max()])
for i in range(0, len(array(self.targets)[0])):
self.max_targets.append(abs(self.targets[:,i].max()))
self.targets[:,i] /= self.max_targets[-1]
网络搭建如下:
self.ANN = FeedForwardNetwork(bias = True)
inLayer = TanhLayer(len(array(self.samples[0])[-1]))
hiddenLayer = TanhLayer(17)
outLayer = LinearLayer(len(array(self.targets[0])[-1]))
self.ANN.addInputModule(inLayer)
self.ANN.addModule(hiddenLayer)
self.ANN.addOutputModule(outLayer)
in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)
self.ANN.addConnection(in_to_hidden)
self.ANN.addConnection(hidden_to_out)
self.ANN.sortModules()
self.DataSet = SupervisedDataSet(len(array(self.samples[0])[-1]),len(array(self.targets[0])[-1]))
"Adding training points"
for i, j in zip(self.samples, self.targets):
self.DataSet.appendLinked(i, j)
trainer = BackpropTrainer( self.ANN, dataset=self.DataSet, momentum=0.99, learningrate = 0.1, verbose=True, weightdecay=0.1)
trainer.trainOnDataset(self.DataSet, 200)
训练器产生的总误差为 1e-2 级。我想它可以更好。神经网络生成的响应与预期值根本不接近。
我使用的数据点太少了吗?当我们有一个维度超过 20 的输入向量和可以生成的样本点数低于 120 个时的多重响应 (> 5) 时,人工神经网络是否做得很好?
【问题讨论】:
-
你的训练和测试数据是什么样的?
标签: python neural-network pybrain