使用 epoch 和 batch 进行神经网络优化
Posted
技术标签:
【中文标题】使用 epoch 和 batch 进行神经网络优化【英文标题】:Neural Network optimization using epoch and batch 【发布时间】:2021-04-25 22:35:40 【问题描述】:我正在尝试通过查找提供最高准确度的 epoch 和 batch 的数量来优化给定的神经网络(例如 Perceptron Multilayer,具有 2 个隐藏层)。
for epoch from 10 to 200 (in steps of 10):
for batch from 40 to 200 (in steps of 20):
modele.fit (X_train, Y_train, epochs = epoch, batch_size = batch)
I save batch, epoch, Accuracy;
之后我保留了最小的epoch,对应的batch最小,识别度最高 ex best_params: epoch = 10, batch = 150 => 准确率 = 94%
我的问题是,当我使用 best_params 重新运行我的模型时,它并没有给我相同的结果(损失、准确度),甚至有时准确度非常低(例如 10%)。
我尝试修复种子,但没有最好的结果
问候
Djam75
【问题讨论】:
请附上型号的代码。 【参考方案1】:感谢您的更新。
我通过保存模型并在之后加载它来解决我的问题。
感谢想法(批量标准化)和额外的想法:不是用户;-)
问候
【讨论】:
【参考方案2】:这可能是由于随机参数初始化而发生的。因为如果您要构建一个没有迁移的端到端模型,则学习权重,每次训练架构时都会获得其参数的随机值。
在这种情况下,一个好的做法是根据您的架构在某些层之后使用批量标准化层。 tensoflow-implementation
pytorch-implmentation
额外的想法: 不要在模型实现中使用任何“for”、“while”循环。 您可以按照 TensorFlow 或 PyTorch 中的模板进行操作。 或者,如果您从头开始构建一个完整的模型,请使用类似 NumPy 的指标操作库矢量化操作。
【讨论】:
非常感谢您的帮助,我会实施的。【参考方案3】:df=pd.DataFrame(columns=['Nb_Batch','Nb_Epoch','Accuracy'])
i=0
lst_loss=[]
lst_accuracy=[]
lst_epoch=list(np.arange(10,200,10))
lst_batch=list(np.arange(100,400,20))
for epoch in lst_epoch:
print ('---------------- Epoch ' + str(epoch)+ '------------------')
for batch in lst_batch:
modelSimple.fit(X_train, Y_train, nb_epoch = epoch, batch_size = batch, verbose = 0)
score = modelSimple.evaluate(X_test, Y_test)
df.loc[i,"Nb_Batch"]=batch
df.loc[i,"Nb_Epoch"]=epoch
df.loc[i,"Accuracy"]=score[1]*100
i=i+1
【讨论】:
【参考方案4】:我认为在完成某些批量大小和时期的训练后,您可能不会更新权重矩阵。
请同时包含代码以查看问题
【讨论】:
以上是关于使用 epoch 和 batch 进行神经网络优化的主要内容,如果未能解决你的问题,请参考以下文章
深度学习基础Epoch, Batch, Iteration这三个概念的区别与联系
神经网络 专业术语解释(Step, Batch Size, Iteration,Epoch)