这可能是一个非常基本的问题。我'我是深度学习的新手,从我收集的东西到现在,人们通常创建批量数据,一旦所有的训练数据都被使用(或者足够的"它),这个过程重复几次(每次迭代称为纪元)。但是,当我查看CIFAR10的教程时:
没有时代这样的东西。他们只在这里提到: cifar10.py
为NUM_EXAMPLES_PER_EPOCH_FOR_TRAIN
,NUM_EXAMPLES_PER_EPOCH_FOR_EVAL
和NUM_EPOCHS_PER_DECAY
。
他们是否使用它来隐含地定义时代?
num_batches_per_epoch = NUM_EXAMPLES_PER_EPOCH_FOR_TRAIN /FLAGS.batch_size
我也问,因为我对如何设置num_epochs
参数(在我自己的模型中)有点困惑:
tf.train.string_input_producer(...,num_epochs=num_epochs,...)`
我应该将其设置为NONE
还是我必须首先计算时代数?
答案 0 :(得分:1)
你的问题有两件事:
理解:对于大多数情况,一个时代并不意味着一次迭代。一个时期意味着完整训练集的一次通过。 NUM_EXAMPLES_PER_EPOCH_FOR_TRAIN
等被定义为here为50000. CIFAR-10有50000个培训示例。然后,您将很容易理解num_batches_per_epoch
。
对于编码,在tf.train.string_input_producer(...,num_epochs=num_epochs,...)
中,您可以查看解释num_epochs
的{{3}}。对于CIFAR-10,您不指定num_epochs
(因为此string_input_producer
不直接读取每个示例。数据库分为5个部分/文件,每个部分存储10000个示例,{{ 1}}读取文件)。