次の例では、 を実行するたびにsess.run([image, label])
、キューから別のサンプルが返されるため、別のサンプルnp_image
が返されます。
slim.queues.QueueRunners
デキュー操作が行われる前に、同じサンプル倍数を使用 (実行) したいことを知らせる方法はありますか?
私が尋ねる理由は、私の VRAM に収まらない大きな op があるからです。大きなオペレーションをいくつかの小さなオペレーションに分割しfeed_dict
、小さなオペレーションが実行されるたびに別のオペレーションをフィードする必要があります。ただし、run
小さな操作をimage
変更すると、コードが壊れます。VRAMサイズが制限であるため、すべての小さなopをリストとrun
リストに同時に入れることはうまくいきません。
ありがとう!
import tensorflow as tf
import numpy as np
slim = tf.contrib.slim
from datasets import dataset_utils
from tensorflow.python.ops import control_flow_ops
from datasets import dataset_factory
from deployment import model_deploy
from nets import nets_factory
from preprocessing import preprocessing_factory
with tf.Graph().as_default():
dataset = dataset_factory.get_dataset('cifar10', 'train','/home/user/dataset/cifar10')
provider = slim.dataset_data_provider.DatasetDataProvider(
dataset,
num_readers=1,
common_queue_capacity=256,
common_queue_min=128)
[image, label] = provider.get(['image', 'label'])
image_preprocessing_fn = preprocessing_factory.get_preprocessing(
'cifarnet',
is_training=True)
images, labels = tf.train.batch([image, label],
batch_size=32,
num_threads=1,
capacity=64)
with tf.Session() as sess:
with slim.queues.QueueRunners(sess):
for i in range(3):
#in every iteration, the tensor 'image' will be different
#the np_image value will be different as well
np_image, np_label = sess.run([image, label])