我正在尝试理解神经网络训练中的“时代”。下一个实验是否等效?

问题描述 投票:2回答:3

假设我有一个用于定义的神经网络的训练样本(带有相应的训练标签)(神经网络的体系结构对于回答此问题并不重要)。让我们将神经网络称为“模型”。

为了不引起任何误解,可以说我介绍了“模型”的初始权重和偏见。

实验1。

我使用训练样本和训练标签来训练40个时期的“模型”。训练后,神经网络将对整个神经网络具有一组特定的权重和偏差,将其称为WB_Final_experiment1。

实验2

我使用训练样本和训练标签来训练20个时期的“模型”。训练后,神经网络将对整个神经网络具有一组特定的权重和偏差,将其称为WB_Intermediate。

现在,我在“模型”中介绍WB_Intermediate,并进行另外20个时期的训练。训练后,神经网络将对整个神经网络具有一组特定的权重和偏差,将其称为WB__Final_experiment2。

注意事项。每个实验的每个参数,超参数,激活函数,损失函数……都完全相同,只是时期不同。

问题:WB_Final_experiment1和WB__Final_experiment2 完全相同吗?

python machine-learning keras neural-network epoch
3个回答
0
投票

如果您正在执行的操作完全是确定性的,那么可以。纪元被实现为围绕您的训练算法的for循环的迭代数。您可以在PyTorch的实现中看到这一点。


0
投票

通常不,模型权重将与优化不同,因为优化将在训练期间产生自己的值。您也需要保存这些内容,以从上次中断的地方真正恢复。有关保存和恢复here,请参见Pytorch文档。但是这个概念并不限于Pytorch框架。

特别是:

重要的是,还要保存优化程序的state_dict,因为这包含随着模型训练而更新的缓冲区和参数。


0
投票

如果遵循本教程here,您将找到下面给出的两个实验的结果-

实验1

enter image description here

enter image description here

实验2

enter image description here

enter image description here

在第一个实验中,模型运行了4个时期,在第二个实验中,模型运行了2个时期,然后使用之前训练的最后权重对模型进行了另外2个时期的训练。您会发现结果有所不同,但变化很小。由于权重的随机初始化,它们将始终变化。但是,两种模型的预测都非常接近。

另一方面,如果您训练了2个时期,则关闭训练课程,并且不保存权重;如果您在重新开始训练后现在进行了2个时期的训练,则预测将不会相同。为避免这种情况,请在训练前始终加载保存的重量以继续使用model.load_weights("path to model")进行训练。

TL; DR

如果模型使用完全相同的权重进行初始化,则在相同训练时期结束时的输出将保持不变。如果它们是随机初始化的,则输出将仅略有不同。

© www.soinside.com 2019 - 2024. All rights reserved.