【发布时间】:2021-03-12 15:12:02
【问题描述】:
我正在使用 TensorFlow 在 Python 中相对较大的数据集 (27G) 上训练一个 CNN 模型。由于我的 RAM 无法将所有数据导入模型,我改为执行以下操作:
- 通过数据集(100)读取数据集(0)
- 进行数据处理
- 将模型训练 20 个 epoch
- 保存模型
- 读取数据集 (101) 到 (200)
并对即将到来的数据重新进行处理和训练。我使用model.save(filepath) 函数,它保存了整个模型(权重、优化器状态和...)。
以下是每次训练后保存和加载模型的简单代码:
loop():
dataprocessing
training_data, training_labels = processed_data()
mod = load_model('Mytf.h5')
history.append(mod.fit(training_data,training_label,batch_size=10,epochs=40))
mod.save('Mytf.h5')
del training_data
del training_label
但是,我在每次训练后对新数据的损失 (mse) 都差不多,然后在 20 个 epoch 之后(例如训练后)再次以相同的损失结束。
这种方法正确吗?还是我错过了一个基本概念?
如果这是不正确的,TensorFlow 是否有助于程序训练到某个点,然后程序生成新的处理数据以在同一时期馈入模型? (例如,将数据集 (0) 的处理数据训练到数据集 (100),例如 1/3 到 epoch,模型停止训练,程序处理新数据,然后以该确切状态输入模型)。
ps:我确保我正确保存了模型,只需加载它并查看它是否会导致与该特定数据集的训练结束时相同的准确性/损失。
【问题讨论】:
标签: python tensorflow machine-learning training-data