加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-17 17:40:43 所属栏目:Python 来源:网络整理
导读:我正在尝试创建一个数据集,该数据集将使用TensorFlow 2.0返回时间序列中的随机窗口以及下一个值作为目标. 我正在使用Dataset.window(),它看起来很有希望: import tensorflow as tfdataset = tf.data.Dataset.from_tensor_slices(tf.range(10))dataset = dat

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

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

import tensorflow as tf

dataset = 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 tf

dataset = 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]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读