2017-05-20 23 views
3

我正在使用具有時代限制的tf.train.string_input_producer將數據輸入到我的模型中。如何在訓練期間獲得此操作的當前時間?從輸入管道獲取當前時期

我注意到圖中有一些與此op有關的節點,其中一個節點包含限制,但我無法找到實際當前值的存儲位置。當然這是在某個地方被追蹤?

更一般地說,如何監視TFRecords管道中的當前時期?

回答

2

我在TF的任何地方都找不到這個。

我的解決方案是手動完成,通過批量(無限)重複,並且只是按我想要的頻率調用我的節點(事先通過計算數據集中的項目數量除以批量大小=一個時代)。

這是使用tensorflow.contrib.data.TFRecordDataset取得最近TF的發佈更容易:

d = TFRecordDataset('some_filename.tfrecords') 
d = d.map(function_which_parses_your_protobuf_format) 
d = d.repeat() 
d = d.shuffle() 
d = d.batch(batch_size) 

然後你可以決定你的數據集的使用

record_count = sum([1 for r in tf.python_io.tf_record_iteration('your_filename.tfrecord')]) 

好像更多的工作,但它提供的尺寸更好的靈活性,因爲你可以使用緩存,所以你不必預先預處理你的數據集,因此可以將原始未觸摸的數據集存儲在tfrecord文件中。