Python:如何遍历10个,然后反向传播,然后遍历下10个

时间:2019-08-20 15:44:06

标签: python loops for-loop neural-network

我正在训练一个神经网络,希望我的程序前馈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

1 个答案:

答案 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来获取每个批次中数据的随机子集,这可能有助于消除偏差