1、python apply函数的用法
函数格式为:apply(func,*args,**kwargs)
(1)该函数最有用的是第一个参数,这个参数是函数,相当于C/C++的函数指针。
(2)args是一个包含按照函数所需参数传递的位置参数的一个元组,是不是很拗口,意思就是,假如A函数的函数位置为 A(a=1,b=2),那么这个元组中就必须严格按照这个参数的位置顺序进行传递(a=3,b=4),而不能是(b=4,a=3)这样的顺序
(3)kwargs是一个包含关键字参数的字典,而其中args如果不传递,kwargs需要传递,则必须在args的位置留空
apply的返回值就是函数func函数的返回值
2、Tensorflow中tf.data.Dataset的使用
inputs = tf.data.Dataset.from_tensor_slices(self.data)
inputs = inputs.apply(shuffle_and_repeat(self.dataset_num)).apply(map_and_batch(Image_Data_Class.image_processing, self.batch_size, num_parallel_batches=16, drop_remainder=True))
.apply(prefetch_to_device(gpu_device, self.batch_size))
这里第一行tf.data.Dataset.from_tensor_slices真正的作用是切分传入Tensor的第一个维度,生成相应的inputs
第二行调用apply函数,实者是将inputs分别进行 shuffle_and_repeat、map_and_batch、prefetch_to_device等处理,返回也是返回这些函数的返回值。
shuffle_and_repeat:洗牌与重复的组合方法
map_and_batch:投影与打包
prefetch_to_device:预读取到设备
此外还有,缓存(cache)、交错读取(interleave)、tf.contrib.data.parallel_interleave可以并行提取数据;映射函数tf.data.Dataset.map能够并行处理用户的指定操作,tf.contrib.data.map_and_batch并行处理用户操作和分批操作。