我想问一个问题,即如何在TensorFlow的估计器的训练过程中监视验证损失。我检查了之前问过的类似问题(validation during training of Estimator),但并没有太大帮助。
如果使用估计器构建模型,则将输入函数提供给Estimator.train()函数。但是没有办法在训练过程中添加另一个validation_x和validation_y数据。因此,当培训开始时,我只能看到培训损失。当训练过程运行时间更长时,预期训练损失会减少。但是,此信息无助于防止过度拟合。更有价值的信息是验证损失。通常,验证损失是带有时期数的U形。为了防止过度拟合,我们希望找到验证损失最小的时期。
所以这是我的问题。在使用估计量的训练过程中,如何在每个时期获得验证损失?
答案 0 :(得分:1)
您需要创建一个验证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”目录中。