我的问题是关于如何从多个(或分片的)tfrecord中获取批输入。我读过www.example.com的例子https://github.com/tensorflow/models/blob/master/inception/inception/image_processing.py#L410。以训练集为例,基本管道是:(1)首先生成一系列tf记录(例如,train-000-of-005
、train-001-of-005
、...),(2)从这些文件名中,生成一个列表,并将它们送入tf.train.string_input_producer
以得到一个队列,(3)同时生成tf.RandomShuffleQueue
以进行其它填充,(4)使用tf.train.batch_join
来生成批输入。
我认为这很复杂,而且我不确定这个过程的逻辑。(多个分离的TF记录,这些.npy
文件中的每一个都包含不同数量的正样本和负样本(2个类)。一个基本的方法是生成一个单独的大tfrecord文件。但是文件太大了(~20Gb
)。所以我求助于分片的tfrecord。有没有更简单的方法来做到这一点?
1条答案
按热度按时间ee7vknir1#
使用
Dataset API
简化了整个过程。(1): Convert numpy array to tfrecords
和(2): read the tfrecords to generate batches
中的一个或多个。1.从numpy数组创建tfrecords:
2.使用数据集API读取tf记录:
检查生成的批是否正确: