使用以下代码训练我的网络时:
classifier = tf.estimator.Estimator(
model_fn=my_neural_network_model,
model_dir=some_path_to_save_checkpoints,
params={
some_parameters
}
)
classifier.train(input_fn=data_train_estimator, steps=step_num)
其中data_train_estimator定义为:
def data_train_estimator():
dataset = tf.data.TextLineDataset(train_csv_file).map(_parse_csv_train)
dataset = dataset.batch(100)
dataset = dataset.shuffle(1000)
dataset = dataset.repeat()
iterator = dataset.make_one_shot_iterator()
feature, label = iterator.get_next()
return feature, label
dataset.shuffle(1000)实际上如何工作?
进一步来说,
假设我有20000张图像,批量大小= 100,随机缓冲区大小= 1000,我训练模型5000步.
1.对于每1000个步骤,我使用10个批次(大小为100),每个批次独立地从洗牌缓冲区中的相同1000个图像中取出?
2.1 shuffle缓冲区是否像移动窗口一样工作?
2.2或者,它是否从5000张图片中随机挑选1000张(有或没有替换)?
3.在整个5000步中,有多少个不同的状态都有shuffle缓冲区?