1. 程式人生 > 實用技巧 >BUG- 使用TFRecord 載入資料,程式執行tf.train.shuffle_batch() 報錯

BUG- 使用TFRecord 載入資料,程式執行tf.train.shuffle_batch() 報錯

這裡就不詳細討論TFRecord的作用,以及如何使用,具體的使用方法,請參考文獻【1】。

Error:

OutOfRangeError (see above for traceback): RandomShuffleQueue '_4_shuffle_batch/random_shuffle_queue' is closed and has insufficient elements (requested 5, current size 0)
[[Node: shuffle_batch = QueueDequeueManyV2[component_types=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/device:CPU:0"](shuffle_batch/random_shuffle_queue, shuffle_batch/n)]]

原因:

根據【1】,在資料轉成TFRecord之前,資料型別是np.uint8格式;在載入TFRecord格式的資料,並使用tf.decode_raw從中提取資料的時候,資料型別設定為tf.float32;資料型別前後不一致導致的。

參考文獻:

【1】https://zhuanlan.zhihu.com/p/53917588