我正在训练一个神经网络,希望我的程序前馈10个示例,然后反向传播,然后遍历下10个示例和反向传播,依此类推。
现在,我有一个代码可以在整个数据集上循环5个时间段,但最好是分批循环(例如也可以5个时间段)。
我的问题是如何基于我所拥有的循环,使之循环到前10个i
,然后循环Net.backward(rate, mse)
,重置错误总和{{1 }},然后遍历整个数据集的下10个sum_error = 0
,依此类推(我有800个示例)。我不知道该怎么实现。我是否应该插入i
之类的i
计数器?
i = i+1
负责for j in range(5):
for i, pattern in enumerate(X):
Net.net_error(y[i], X[i])
sum_error = sum_error + np.square(Net.net_error(y[i],X[i]))
mse = (sum_error) / (len(X))
print(f" # {str(j)}{mse}")
Net.backward(rate, mse)
sum_error = 0
部分的代码:
net_error
答案 0 :(得分:0)
关于您的原始问题,我想您可能想做类似的事情:
num_epochs = 5
batch_size = 10
for epoch in range(num_epochs):
perm_idx = np.random.permutation(len(X))
for ix in range(0, len(perm_idx), batch_size):
batch_indicies = perm_idx[ix:ix+batch_size]
sum_error = 0
for i in batch_indicies:
sum_error += np.square(Net.net_error(y[i], X[i]))
Net.backward(rate, sum_error / len(X))
请注意,我正在使用permutation
来获取每个批次中数据的随机子集,这可能有助于消除偏差