我正在使用带有Tensorflow对象检测API的Faster-RCNN模型进行标识检测算法。 我的数据集是按字母顺序排列的(所以有一百个阿迪达斯标志,然后百个苹果标志等)。而且我希望在训练时将其洗牌。使用Tensorflow对象检测api改写训练数据集
我已经把一些值在配置文件中:
train_input_reader:{
shuffle: true
queue_capacity: some value
min_after_dequeue : some other value}
然而无论是价值观,我把在,算法是在所有A公司的徽标(阿迪达斯,苹果的第一次训练等等),只有一段时间后,开始看b的标志(bmw等)和c的一个等
当然,我可以直接洗牌我的输入数据集,但我想了解逻辑在它后面。
PS:我已经看到这个post关于洗牌和min_after_dequeue,但我仍然没有得到它。我的批量大小是1,所以它不应该使用tf.train.shuffle_batch()
,但只能使用tf.RandomShuffleQueue
我的训练数据集大小是5000,如果我写min_after_dequeue: 4000 or 5000
它仍然没有洗牌正确。为什么?
更新: @AllenLavoie这是一个有点难受;因为有很多依赖关系,而我是Tensorflow的新手。 但最终队列由
tf.contrib.slim.parallel_reader.parallel_read( _, string_tensor = parallel_reader.parallel_read(
config.input_path,
reader_class=tf.TFRecordReader,
num_epochs=(input_reader_config.num_epochs
if input_reader_config.num_epochs else None),
num_readers=input_reader_config.num_readers,
shuffle=input_reader_config.shuffle,
dtypes=[tf.string, tf.string],
capacity=input_reader_config.queue_capacity,
min_after_dequeue=input_reader_config.min_after_dequeue)
构建看来,当我把num_readers = 1
在配置文件中的数据集最后的重排,我想,(至少在初期),但是当有在开始的时候更多的是按照字母顺序排列的标志。
你可以发布一个最小限度的复制(即一个自包含的命令+代码具有相同的问题位)?我怀疑配置参数并没有传播到TensorFlow,但是有很多方法可能发生。 –
@AllenLavoie在帖子中增加了更多信息 –
您可以通过将'parallel_read'参数设置为文字值(例如'shuffle = True,min_after_dequeue = 4000,capacity = 10000')来重现吗? –