看了bp神经网络算法,受益匪浅
想请教一下,关于小批量梯度下降法,我有20000个样本,想要分200个批次,每一批100个样本进行训练,那这里的参数该如何设置
#神经网络训练
bp1.MSGD(train_data, 10000, len(train_data), 0.01)
def MSGD(self, training_data, epochs, mini_batch_size, eta, error = 0.01):
'''
小批量随机梯度下降法
'''
n = len(training_data)
for j in range(epochs):
# 随机打乱训练集顺序
random.shuffle(training_data)
# 根据小样本大小划分子训练集集合
mini_batchs = [training_data[k:k+mini_batch_size]
for k in range(0, n, mini_batch_size)]
# 利用每一个小样本训练集更新 w 和 b
for mini_batch in mini_batchs:
self.updata_WB_by_mini_batch(mini_batch, eta)
#迭代一次后结果
err_epoch = self.evaluate(training_data)
print("Epoch {0} Error {1}".format(j, err_epoch))
if err_epoch < error:
break
# if test_data:
# print("Epoch {0}: {1} / {2}".format(j, self.evaluate(test_data), n_test))
# else:
# print("Epoch {0}".format(j))
return err_epoch
还有就是我200次迭代为一轮,需不需要进行多轮训练,有没有相关参数设置
小批量梯度下降法是在这篇博客学的:
https://blog.csdn.net/xuechanba/article/details/124807762
感谢您的解答!
下面是bp神经网络参考的原文连接:
https://blog.csdn.net/qq_45077760/article/details/124508235