我有一个用PyBrain创建的ANN并且在有限的数据集上进行了训练,因此为了验证,我单独留出一行进行测试,然后对剩下的线进行训练并重复。我显然希望每次创建和训练一个新的ANN。如果我在循环之外创建网络,那么与我在while循环中每次创建它时相比,我的结果要好得多。这是因为每次运行人工神经网络循环时,有些权重都存储在网络中,并且每次都有效地训练和测试数据(我显然想避免)?我以前认为清理并创建一个新的ds以在每个周期添加到网络就足够了。
net = buildNetwork(5, 30, 2, outclass=SigmoidLayer)
k=0
while k<len(content):
ds = SupervisedDataSet(5, len(configuration))
ds.clear()
for line_num,line in enumerate(content):
line=line.strip('\n')
lines=line.split(',')
shifts=lines[0:5]
shifts=[float(i) for i in shifts]
output = [0. for _ in range(2)]
output[configuration.index(lines[5])] = 1
if line_num != k:
ds.addSample((shifts),(output))
if line_num == k:
testing_shifts=shifts
"""Continue running through content, leaving one line for testing and adding all others to ds, repeat so test each individual line in the database"""