肾盂脑退化

2024-10-01 22:34:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图建立一个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时,人工神经网络的性能好吗?你知道吗


Tags: toinselfforlenarraydatasetmax
1条回答
网友
1楼 · 发布于 2024-10-01 22:34:43

对于如此复杂的网络,您的样本太少。你知道吗

你的网络从输入到隐藏层有2*17=34个连接,从隐藏层到输出有17*2=34个连接,从偏置单元有17+2=19个连接。这意味着您需要调整87个参数。你知道吗

如果用70%的样本数据训练数据,并用30%的样本数据进行交叉验证和测试,则得到84个“已知”值。当已知值的数量与参数的数量相似(甚至低于)时,你的神经网络很容易过度拟合,使其与训练数据完美匹配(非常低的训练误差),但对其他数据却毫无用处。你知道吗

你需要一个不那么复杂的网络或者更多的样本。你知道吗

相关问题 更多 >

    热门问题