0

次の例では、 を実行するたびに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])
4

1 に答える 1