tf.train.shuffle_batch函数解析
tensor_list: The list of tensors to enqueue.
入队的张量列表
batch_size: The new batch size pulled from the queue.
表示进行一次批处理的tensors数量.
capacity: An integer. The maximum number of elements in the queue.
容量:一个整数,队列中的最大的元素数.
这个参数一定要比min_after_dequeue参数的值大,并且决定了我们可以进行预处理操作元素的最大值.
推荐其值为:
capacity=(min_after_dequeue+(num_threads+a small safety margin∗batchsize)
min_after_dequeue: Minimum number elements in the queue after a
dequeue(出列), used to ensure a level of mixing of elements.
当一次出列操作完成后,队列中元素的最小数量,往往用于定义元素的混合级别.
定义了随机取样的缓冲区大小,此参数越大表示更大级别的混合但是会导致启动更加缓慢,并且会占用更多的内存
tf.train.string_input_producer函数解析
tf.train.string_input_producer(
string_tensor,
num_epochs=None,
shuffle=True,
seed=None,
capacity=32,
shared_name=None,
name=None,
cancel_op=None
)
filename_queue = tf.train.string_input_producer(filename, shuffle=False, num_epochs=5)
string_input_producer会产生一个文件名队列
filename文件名,可以将多个文件名相加,或者是输入一个文件名,不限定是图片
如:filename = [‘A.jpg’, ‘B.jpg’, ‘C.jpg’]
shuffle是指在一个epoch内文件的顺序是否被打乱。
如果设置shuffle=True,那么在一个epoch内,数据的前后顺序就会被打乱
num_epochs
epoch。对于一个数据集来讲,运行一个epoch就是将这个数据集中的图片全部计算一遍。如一个数据集中有三张图片A.jpg、B.jpg、C.jpg,那么跑一个epoch就是指对A、B、C三张图片都计算了一遍。两个epoch就是指先对A、B、C各计算一遍,然后再全部计算一遍,也就是说每张图片都计算了两遍。