在tensorflow2.0的文档中,对于tf.data.Datsset.apply函数的用法示例,其中的group_by_window函数不好理解,而且在tensorflow2.0版本中似乎找不到,后来在1.15版本中找到了已经弃用的group_by_window函数,经过研究,初步了解了该函数的用法。
该函数的用法在我在StackOverflow中看到了有关的问题问题链接,通过一段示例代码可以了解该函数的用法。
import tensorflow as tf
import numpy as np
components = np.arange(100).astype(np.int64)
dataset = tf.data.Dataset.from_tensor_slices(components)
dataset = dataset.apply(
tf.contrib.data.group_by_window(
key_func=lambda x: x%2,
reduce_func=lambda k,
els: els.map(lambda x:(k,x)).batch(25),
window_size=25))
iterator = dataset.make_one_shot_iterator()
features=iterator.get_next()
sess=tf.Session()
> (array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0]),
array([0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,
34, 36, 38, 40, 42, 44, 46, 48]))
sess.run(features)
注意到np.arange(100)
的数组通过切片方式转成了Tensor,并通过apply函数调用group_by_window函数来对该Tensor进行变换操作,其中group_by_window函数的参数key_func为除以2取余数的函数,所有的数都相当于得到了一个key值0或1,reduce_func为通过key_func得到的key值来变换原来的Tensor,本例中是将每个key与Tensor中的一个元素通过batch函数分成了几个批次。如果要将k与x放在一起,可以将(k,x)替换为[[k,x]].
该函数在tensorflow2.0中已经弃用了,研究它的目的是tensorflow2.0的文档中的apply函数示例中用到了这个函数,为了研究apply函数才看了这个函数。但应该是与pandas中的同名函数相似。