保存张量流模型并加载它以进行进一步训练
Saving a tensorflow model and loading it for further training
我正在 python 中的一个相对较大的数据集 (27G) 上训练我使用 TensorFlow 制作的 CNN 模型。由于我的 RAM 无法导入所有数据以输入模型,因此我改为执行以下操作:
- 通过数据集(100)读取数据集(0)
- 进行数据处理
- 训练模型 20 个时期
- 保存模型
- 读取数据集 (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 个时期后(例如训练后)再次以相同的损失结束。
这种做法正确吗?还是我错过了一个基本概念?
如果这是不正确的,TensorFlow 是否有助于程序训练到某个点,然后程序生成新的处理数据以在同一时期输入模型的能力? (例如,将数据集 (0) 的处理数据训练到数据集 (100),比如 1/3 时期,模型 stops 训练和程序处理新数据,然后以该确切状态输入模型) .
ps:我确保我正确地保存了模型,只需加载它并查看它是否产生与针对该特定数据进行训练时相同的 accuracy/loss设置结束。
我宁愿做
Repeat 20 time:
read next 100 datasets/datapoints
do the data processing
train the model for 1 epoch
save the model
当你在 n 个数据点上 运行 20 个 epoch 时,你可能对它们过度拟合,当它看到下一个 n 个数据点时,它必须重新学习。而是 运行 每组只做 1 个 epoch,做 n 次。
此外,在您采用的方法中,而不是拟合 20 个时期,提前停止以避免过度拟合。
我正在 python 中的一个相对较大的数据集 (27G) 上训练我使用 TensorFlow 制作的 CNN 模型。由于我的 RAM 无法导入所有数据以输入模型,因此我改为执行以下操作:
- 通过数据集(100)读取数据集(0)
- 进行数据处理
- 训练模型 20 个时期
- 保存模型
- 读取数据集 (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 个时期后(例如训练后)再次以相同的损失结束。
这种做法正确吗?还是我错过了一个基本概念?
如果这是不正确的,TensorFlow 是否有助于程序训练到某个点,然后程序生成新的处理数据以在同一时期输入模型的能力? (例如,将数据集 (0) 的处理数据训练到数据集 (100),比如 1/3 时期,模型 stops 训练和程序处理新数据,然后以该确切状态输入模型) .
ps:我确保我正确地保存了模型,只需加载它并查看它是否产生与针对该特定数据进行训练时相同的 accuracy/loss设置结束。
我宁愿做
Repeat 20 time:
read next 100 datasets/datapoints
do the data processing
train the model for 1 epoch
save the model
当你在 n 个数据点上 运行 20 个 epoch 时,你可能对它们过度拟合,当它看到下一个 n 个数据点时,它必须重新学习。而是 运行 每组只做 1 个 epoch,做 n 次。
此外,在您采用的方法中,而不是拟合 20 个时期,提前停止以避免过度拟合。