2017-10-17 45 views
1

我使用卷積網絡對不同形狀的圖像進行分類。我找不到在Tensorflow中加載圖像的方法。基於this issue它應該與tf.data.Dataset()一起使用。我用這種方式產生的數據集:不同形狀的Tensorflow數據集

dataset = tf.data.Dataset.from_tensor_slices(filenames) 
    dataset = dataset.map(read_file) 
    dataset = dataset.shuffle(samples_in_buffer) 
    dataset = dataset.batch(batch_size) 
    dataset = dataset.repeat() 

執行時我收到此錯誤

HandleElementToSlice Cannot copy slice: number of elements does not match. Shapes are: [element]: [295,256,3], [parent slice]: [276,128,3] 

是否有可能以不同的尺寸,隨機播放和他們使用Tensorflow批量加載圖像?

備註:我想使用空間金字塔池來處理不同的圖像大小。

回答

1

dataset.batch()正在努力打造從不同大小(你的不同大小的圖像)的張量密集批,這裏提到:tf.contrib.data.DataSet batch size can only set to 1

你的代碼很可能如果任1.要設置工作batch_size = 1或2.將所有圖像調整爲相同的大小,例如在你的read_file函數中使用tf.image.resize_image_with_crop_or_pad()。

另一種選擇是使用dataset.padded_batch(...)而不是dataset.batch並指定padded_shape,使所有圖像具有相同的大小(包括填充),即可能dataset.padded_batch(batch_size,padded_shape = [無])。

最後,在即將發佈的TF r1.4中,您可以使用dataset.from_generator()。