python-如何使用由TensorFlow 2.0中的Dataset.window()方法创建的窗口?

python-如何使用由TensorFlow 2.0中的Dataset.window()方法创建的窗口?,第1张

概述我正在尝试创建一个数据集,该数据集将使用TensorFlow 2.0返回时间序列中的随机窗口以及下一个值作为目标.我正在使用Dataset.window(),它看起来很有希望:import tensorflow as tf dataset = tf.data.Dataset.from_tensor_slices(tf.range(10)) dataset

我正在尝试创建一个数据集,该数据集将使用TensorFlow 2.0返回时间序列中的随机窗口以及下一个值作为目标.

我正在使用Dataset.window(),它看起来很有希望:

import tensorflow as tfdataset = tf.data.Dataset.from_tensor_slices(tf.range(10))dataset = dataset.window(5,shift=1,drop_remainder=True)for window in dataset:    print([elem.numpy() for elem in window])

输出:

[0,1,2,3,4][1,4,5][2,5,6][3,6,7][4,7,8][5,8,9]

但是,我想使用最后一个值作为目标.如果每个窗口都是张量,我将使用:

dataset = dataset.map(lambda window: (window[:-1],window[-1:]))

但是,如果尝试此 *** 作,则会出现异常:

TypeError: '_VariantDataset' object is not subscriptable
最佳答案解决方案是这样调用flat_map():

dataset = dataset.flat_map(lambda window: window.batch(5))

现在数据集中的每个项目都是一个窗口,因此您可以像这样拆分它:

dataset = dataset.map(lambda window: (window[:-1],window[-1:]))

因此,完整的代码是:

import tensorflow as tfdataset = tf.data.Dataset.from_tensor_slices(tf.range(10))dataset = dataset.window(5,drop_remainder=True)dataset = dataset.flat_map(lambda window: window.batch(5))dataset = dataset.map(lambda window: (window[:-1],window[-1:]))for X,y in dataset:    print("input:",X.numpy(),"Target:",y.numpy())

哪个输出:

input: [0 1 2 3] Target: [4]input: [1 2 3 4] Target: [5]input: [2 3 4 5] Target: [6]input: [3 4 5 6] Target: [7]input: [4 5 6 7] Target: [8]input: [5 6 7 8] Target: [9]
总结

以上是内存溢出为你收集整理的python-如何使用由TensorFlow 2.0中的Dataset.window()方法创建的窗口? 全部内容,希望文章能够帮你解决python-如何使用由TensorFlow 2.0中的Dataset.window()方法创建的窗口? 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1199660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存