Han*_*n M 6 python machine-learning deep-learning tensorflow
我想问一个问题,在TensorFlow中estimators的训练过程中如何监控validation loss。我已经检查过一个类似的问题(在 Estimator 训练期间验证)之前问过,但它没有多大帮助。
如果我使用 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)
Run Code Online (Sandbox Code Playgroud)
estimator.evaluate() 将计算损失和 model_fn 中定义的任何其他指标,并将事件保存在 job_dir 内的新“eval”目录中。
| 归档时间: |
|
| 查看次数: |
2593 次 |
| 最近记录: |