我想问一个关于如何在 TensorFlow 估计器的训练过程中监控验证损失的问题。我查过类似的问题(估计器训练期间的验证 https://stackoverflow.com/questions/45417502/validation-during-training-of-estimator)之前问过,但没有多大帮助。
如果我使用估计器来构建模型,我将为 Estimator.train() 函数提供一个输入函数。但没有办法在训练过程中再添加validation_x和validation_y数据。因此,当训练开始时,我只能看到训练损失。当训练过程运行时间更长时,训练损失预计会减少。然而,这些信息对于防止过度拟合没有帮助。更有价值的信息是验证损失。通常,验证损失是带有 epoch 数量的 U 形。为了防止过度拟合,我们希望找到验证损失最小的时期数。
所以这是我的问题。在使用估计器的训练过程中如何获得每个时期的验证损失?
您需要创建一个验证 input_fn 并交替使用 estimator.train() 和 estimator.evaluate() 或简单地使用 tf.estimator.train_and_evaluate()
x = ...
y = ...
...
# For example, if x and y are numpy arrays < 2 GB
train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
val_dataset = tf.data.Dataset.from_tensor_slices((x_val_, y_val))
...
estimator = ...
for epoch in n_epochs:
estimator.train(input_fn = train_dataset)
estimator.evaluate(input_fn = val_dataset)
estimator.evaluate() 将计算损失和 model_fn 中定义的任何其他指标,并将事件保存在 job_dir 内的新“eval”目录中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)