我正在使用帶有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')來重現嗎? –