我在大型数据集上使用tf.train.shuffle_batch()时遇到了一些麻烦。 我正在那样使用它:
x_train, y_train = tf.train.shuffle_batch(
[images["train"], labels["train"]],
batch_size=self.batch_size, #I reduced it to 8
capacity=50000,
enqueue_many=True,
min_after_dequeue=0,
num_threads=16,
seed=self.seed,
allow_smaller_final_batch=True,
)
其中:
images["train"].shape = (88179,64,64,3) #Training set of tiny-Imagenet
labels["train"].shape = (88179,) #Related labels
它输出了我的错误:
ValueError: Cannot create a tensor proto whose content is larger than 2GB.
事实上我尝试了一个较小的数据集(CIFAR-10),其中形状较小(以及160个batch_size):
images["train"].shape = (45000,32,32,3) #Training set of CIFAR-10
labels["train"].shape = (45000,) #Related labels
和tf.train.shuffle_batch()完美无缺。
我在这个问题上看到很多问题,但没有人在使用tf.train.shuffle_batch()(我看到一个但实际上没有回答:Tensorflow > 2GB array as an input for tf.slice_input_producer)
有人有想法吗?
[CONFIG:TITAN X 12Go,32Go RAM,tensorflow 1.4.1,python 2.7.15,CUDA 8.0]