我的总体目标是使用tf.data API创建时间序列数据集。通过使用window()函数将数据集分组为较小的重叠块,我越来越接近了。问题在于window()返回一个数据集,其中每个元素都是数据集的集合。我的目标是将子数据集堆叠到张量中,以便新数据集的每个元素都只是张量。看来可以先使用window()然后再执行reduce()来完成此操作,但是使用这种方法却没有成功。
我致电tf.data.Dataset.map()
时收到警告:UserWarning: Creating resources inside a function passed to Dataset.map() is not supported. Create each resource outside the function, and capture it inside the function to use it.
我在MacOSX上使用tensorflow 2.0.0a0和Python 3.6.2。
起初,我认为问题在于存储“功能”和“标签”变量,因此我在flatten_window()
内合并了三行,但这没有用。
def flatten_window(dataset):
feature = tf.data.experimental.get_single_element(dataset.take(1))
label = tf.data.experimental.get_single_element(dataset.skip(1).take(1))
return {"lags": feature}, label
lookahead=2
lookbehind=2
transformed_data_train = np.array(range(100))
dataset = tf.convert_to_tensor(transformed_data_train, dtype=tf.float32)
dataset = tf.data.Dataset.from_tensor_slices(dataset)
dataset = dataset.window(size=lookahead + lookbehind, shift=1, stride=1, drop_remainder=True)
dataset = dataset.map(flatten_window)
我基本上只是想摆脱此警告消息。感谢您的帮助。
编辑:添加了有关用例的其他详细信息。