Python TensorFlow:将tf.Dataset转换为tf.Tensor

Python TensorFlow:将tf.Dataset转换为tf.Tensor,python,tensorflow,dataset,tensorflow2.0,tensorflow-datasets,Python,Tensorflow,Dataset,Tensorflow2.0,Tensorflow Datasets,我想生成范围为10的窗口: import tensorflow as tf dataset = tf.data.Dataset.from_tensor_slices(tf.range(10)) dataset = dataset.window(5, shift=1, drop_remainder=True) 我想在这个数据集上训练我的模型 为此,这些窗口必须转换为张量。但是这些窗口的数据类型不能通过tf进行转换。将\u转换为\u张量转换为张量。可以执行tf。将_转换为_张量(列表(窗口)),

我想生成范围为10的窗口:

import tensorflow as tf

dataset = tf.data.Dataset.from_tensor_slices(tf.range(10))
dataset = dataset.window(5, shift=1, drop_remainder=True)
我想在这个数据集上训练我的模型

为此,这些窗口必须转换为张量。但是这些窗口的数据类型不能通过
tf进行转换。将\u转换为\u张量
转换为张量。可以执行
tf。将_转换为_张量(列表(窗口))
,但这是非常低效的

有人知道如何有效地将
tf.VariantDataset
转换为
tf.Tensor


谢谢你的帮助

如果要创建滑动窗口的张量,通过数据集来创建它并不是最好的方法,效率和灵活性要低得多。我不认为有一个合适的操作,但有两个类似的2D和3D阵列,以及。您可以重塑1D数据以使用它们:

将tensorflow导入为tf
a=tf.范围(10)
win_大小=5
步幅=1
#选择1
a_win=tf.image.extract_面片(tf.reformate(a,[1,-1,1,1]),
大小=[1,win_大小,1,1],
步幅=[1,步幅,1,1],
利率=[1,1,1,1],
padding='VALID')[0,:,0]
#选择2
a_win=tf.提取体积块(tf.重塑(a,[1,-1,1,1,1]),
ksizes=[1,win_size,1,1,1],
步幅=[1,步幅,1,1,1],
padding='VALID')[0,:,0,0]
#打印结果
打印(a_win.numpy())
# [[0 1 2 3 4]
#  [1 2 3 4 5]
#  [2 3 4 5 6]
#  [3 4 5 6 7]
#  [4 5 6 7 8]
#  [5 6 7 8 9]]

我不太明白。通常不会将数据集转换为张量,而是迭代数据集,在这些迭代中,它们会为您提供张量。你想打开其中一扇窗户吗?或者你想得到一个包含所有窗口的张量?@jdehesa后者:)非常感谢!