我对时代和步骤的含义完全感到困惑。我也读过问题What is the difference between steps and epochs in TensorFlow?,但是我不确定答案。考虑这段代码:
EVAL_EVERY_N_STEPS = 100
MAX_STEPS = 10000
nn = tf.estimator.Estimator(
model_fn=model_fn,
model_dir=args.model_path,
params={"learning_rate": 0.001},
config=tf.estimator.RunConfig())
for _ in range(MAX_STEPS // EVAL_EVERY_N_STEPS):
print(_)
nn.train(input_fn=train_input_fn,
hooks=[train_qinit_hook, step_cnt_hook],
steps=EVAL_EVERY_N_STEPS)
if args.run_validation:
results_val = nn.evaluate(input_fn=val_input_fn,
hooks=[val_qinit_hook,
val_summary_hook],
steps=EVAL_STEPS)
print('Step = {}; val loss = {:.5f};'.format(
results_val['global_step'],
results_val['loss']))
end
另外,训练样本的数量为400。我认为MAX_STEPS // EVAL_EVERY_N_STEPS等于历元(或迭代)。确实,纪元数是100。这些步骤在nn.train中意味着什么?
答案 0 :(得分:0)
在深度学习中:
如果未对数据集进行分割并按原样传递给算法,则每个步骤对应一个纪元,但是通常,将训练集划分为N个迷你批。然后,每一步都要经过一批,您需要N步才能完成一个完整的纪元。
在这里,如果batch_size == 4
,则100步确实等于一个纪元。
epochs = batch_size * steps // n_training_samples