我在tensorflow中使用train_and_evaluate函数,并希望使eval步骤更频繁地发生(通过全局步骤或经过的时间)。这是我的代码(没有显示模型函数)。
def get_classifier(batch_size):
config = tf.estimator.RunConfig(
model_dir="models/shape_model_cnn_3",
save_checkpoints_secs=300,
save_summary_steps=100)
params = tf.contrib.training.HParams(
batch_size=batch_size,
num_conv=[48,64,96], # Sizes of each convolutional layer
conv_len=[2,3,4], # Kernel size of each convolutional layer
num_nodes=128, # Number of LSTM nodes for each LSTM layer
num_layers=3, # Number of LSTM layers
num_classes=7, # Number of classes in final layer
learning_rate=0.0001,
gradient_clipping_norm=9.0,
dropout=0.3)
classifier = tf.estimator.Estimator(
model_fn=my_model,
config=config,
params=params
)
return classifier
classifier = get_classifier(8)
train_spec = tf.estimator.TrainSpec(
input_fn=lambda:input.batch_dataset("dataset/shape-train-???.tfrecords", tf.estimator.ModeKeys.TRAIN, 8),
max_steps=100000
)
eval_spec = tf.estimator.EvalSpec(
input_fn=lambda:input.batch_dataset("dataset/shape-eval-???.tfrecords", tf.estimator.ModeKeys.EVAL, 8)
)
tf.estimator.train_and_evaluate(classifier, train_spec, eval_spec)我尝试在我的start_delay_secs中使用EvalSpec参数,我不确定这是否是为了什么,但它似乎没有任何效果。
发布于 2018-04-25 08:37:16
我发现在EvalSpec,`throttle_secs‘中有一个参数,它在数秒后开始评估阶段。或者,如果您想要基于多个步骤进行计算,可以使用一个for循环,并按照@Kathy的建议递增max_steps。
发布于 2019-01-08 13:39:58
当我设置save_checkpoints_steps时,它确实在指定的步骤数之后运行评估;配置:
tf.estimator.RunConfig(save_summary_steps=5, log_step_count_steps=3, save_checkpoints_steps=40)
给出每个40 steps的评估。
发布于 2018-04-23 23:42:32
您可以将max_steps设置为较低的数字,以便更快地进行计算。
这将重置输入函数。目前,无法使用估计器暂停输入函数并在相同状态下继续工作。我们正在考虑添加这个特性。
https://stackoverflow.com/questions/49989857
复制相似问题