我正在研究一个机器学习线性回归问题,其中我的训练文件大约为8 8GB。
虽然我的Tp是高配置,但它不支持。因此,我可以将训练文件分成10/20个文件,然后用这些文件逐个训练模型,而不是为了训练目的而传递整个文件吗?
这种方法是否有效,或者我是否必须在一次训练中使用全部数据训练模型?
发布于 2017-10-09 23:30:54
是的,这是可行的。它被称为随机梯度下降,当你的数据无法放入内存时,这是一种标准的训练方法。
随机意味着“随机性”,之所以被称为随机,是因为你没有遵循所有数据的实际梯度,而是基于某些数据的梯度的近似值。即使您并不总是沿着正确的方向进行更新,只要您的步长足够小,批处理足够大,该过程仍然可以很好地工作。
,但是,需要注意的是:,你不能一个接一个地训练它直到每个文件都完成。如果这样做,在第二个文件上的训练将导致它忘记在第一个文件上学到的值。
相反,您应该在他们所谓的“批处理”数据上对其进行训练,并对每个批处理执行一个更新步骤。
所以,这很糟糕:
for file in files:
while not Model.stop_condition():
Model.train_step(file),这很好:
while not Model.stop_condition():
for file in files:
Model.train_step(file)https://stackoverflow.com/questions/46648238
复制相似问题