2017-10-17 9 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-functionでtf.image.resize_image_with_crop_or_pad()を使用します。

dataset.batchの代わりにdataset.padded_batch(...)を使用し、すべての画像が同じサイズ(パディングを含む)を持つようにpadded_shapeを指定することもできます。つまり、dataset.padded_batch(batch_size、padded_shape = [なし])。

最後に、TF r1.4では、dataset.from_generator()を使用します。

関連する問題