【发布时间】:2011-02-27 22:05:13
【问题描述】:
我正在使用this library 来实现一个学习代理。
我已经生成了训练用例,但我不确定验证集和测试集是什么。
老师说:
70% 应该是训练用例,10% 是测试用例,其余 20% 应该是验证用例。
编辑
我有这个训练代码,但我不知道什么时候停止训练。
def train(self, train, validation, N=0.3, M=0.1):
# N: learning rate
# M: momentum factor
accuracy = list()
while(True):
error = 0.0
for p in train:
input, target = p
self.update(input)
error = error + self.backPropagate(target, N, M)
print "validation"
total = 0
for p in validation:
input, target = p
output = self.update(input)
total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output
accuracy.append(total)
print min(accuracy)
print sum(accuracy[-5:])/5
#if i % 100 == 0:
print 'error %-14f' % error
if ? < ?:
break
编辑
验证数据的平均误差为 0.2,经过大概 20 次训练迭代后,应该是 80%?
平均误差 = 给定验证数据输入/验证数据大小,验证目标和输出之间的绝对差之和。
1
avg error 0.520395
validation
0.246937882684
2
avg error 0.272367
validation
0.228832420879
3
avg error 0.249578
validation
0.216253590304
...
22
avg error 0.227753
validation
0.200239244714
23
avg error 0.227905
validation
0.199875013416
【问题讨论】:
-
"...应该是 80%?"不,平均错误和正确百分比是两个不同的东西。假设您的目标值为 5.0,而您的神经元返回 4.8(即误差为 0.2)。根据数据,0.2 的误差可能是可以接受的,因此如果误差足够小,那么您可能会认为该实例已正确指定。因此,如果您有 10 个目标,其中 7 个目标的分类误差在可接受范围内,那么您将正确分类 70% 的数据。
-
你的老师要求的终止条件是什么?
标签: artificial-intelligence neural-network