2017-12-05 16 views
2

TL; DR:テンソルフロー0.1.4でDataset APIを使用しているときにデータがマルチスレッド形式で確実に読み込まれるようにする方法Dataset apiのマルチスレッド化

filename_queue = tf.train.string_input_producer(filenames)  
image_reader = tf.WholeFileReader() 
_, image_file = image_reader.read(filename_queue)  
imsize = 120  
image = tf.image.decode_jpeg(image_file, channels=3) 
image = tf.image.convert_image_dtype(image, dtype=tf.float32) 
image_r = tf.image.resize_images(image, [imsize, imsize])  
images = tf.train.shuffle_batch([image_r], 
    batch_size=20, 
    num_threads=30, 
    capacity=200, 
    min_after_dequeue=0) 

これは、次の学習の繰り返しのためのデータが準備20件のスレッドが存在することを保証します。

以前私は、ディスクの私のイメージでこのような何かをしました。私はイテレータを作成し、この後

dataset = tf.data.Dataset.from_tensor_slices((filenames, filenames_up, filenames_blacked)) 
dataset = dataset.map(parse_upscaler_corrector_batch) 

は今データセットのAPIと私のような何かをは、さらなる処理のために渡されます

sess = tf.Session(); 
iterator = dataset.make_initializable_iterator(); 
next_element = iterator.get_next(); 
sess.run(iterator.initializer); 
value = sess.run(next_element) 

変数値を。

ここで、データがマルチスレッドで作成されていることを確認するにはどうすればよいですか?どこで私はDataset APIとマルチスレッドデータを読むことができますか?

答えて

1

だから、次のようにこれを達成するための方法であると表示されます。

dataset = dataset.map(parse_upscaler_corrector_batch, num_parallel_calls=12).prefetch(32).batch(self.ex_config.batch_size) 

1が= 12 num_parallel_callsを変更した場合1は、ネットワーク/ HDD負荷とCPU負荷スパイクまたは減少の両方のことを見ることができます。

関連する問題