我正在尝试使用TPUEstimator
withtrain_and_evaluate()
进行 GCMLE 实验。TPUEstimator
有一个必需的参数,train_batch_size
显然指定了批量大小。但是,train_and_evaluate()
我还通过 TrainSpec 指定了批量大小:
train_input = lambda: input_fn(
filenames = hparams.train_files,
batch_size = hparams.train_batch_size,
hparams = hparams,
num_epochs = hparams.num_epochs,
shuffle=True,
skip_header_lines=1
)
train_spec = tf.estimator.TrainSpec(train_input, max_steps = hparams.train_steps)
estimator = tpu_estimator.TPUEstimator(
use_tpu=True,
model_fn=model_fn,
config=run_config,
train_batch_size = hparams.train_batch_size,
eval_batch_size = hparams.eval_batch_size,
)
tf.estimator.train_and_evaluate(tpu_estimator, train_spec, eval_spec)
在此示例中,请考虑train_input
在 train_spec 中指定了自己的 batch_size(例如 tf.train.batch() 或 tf.datasets.batch()),也是train_batch_size
TPUEstimator 的要求。
在两个不同的地方通过这对我来说似乎很草率train_batch_size
——建议只是为了确保将相同的批量大小传递给 TPUEstimator 和 TrainSpec?如果 TPUEstimator 中的 batch_size 与 TrainSpec 中的 batch_size 不同,train_and_evaluate()
那么会优先考虑什么?有没有更好的方法将 train_and_evaluate() 与 TPUEstimator 一起使用,并且不需要在两个不同的地方传递这个 batch_size?
此外,TPUEstimator 似乎自动创建 params['batch_size'] 根据文档,这似乎是“有效批量大小”。有效批量大小与 train_batch_size 有何关系?如果我的 train_batch_size 为 1024,那么“有效批量大小”是否为 128(因为 8 个内核)?