对于tf数据集,Panda的df.head()等价于什么?

按照here文档,我构造了以下玩具示例:

dset = tf.data.Dataset.from_tensor_slices((tf.constant([1.,2.,3.]), tf.constant([4.,4.,4.]), tf.constant([5.,6.,7.])))
print(dset)

输出
<TensorSliceDataset shapes: ((), (), ()), types: (tf.float32, tf.float32, tf.float32)>

我希望返回类似于张量的东西,因此要获取一些值,我将创建一个迭代器。

dset_iter = dset.__iter__()
print(dset_iter.next())

输出

(<tf.Tensor: id=122, shape=(), dtype=float32, numpy=1.0>,
 <tf.Tensor: id=123, shape=(), dtype=float32, numpy=4.0>,
 <tf.Tensor: id=124, shape=(), dtype=float32, numpy=5.0>)

到现在为止还挺好。让我们尝试一些窗口化...

windowed = dset.window(2)
print(windowed)

输出

<WindowDataset shapes: (<tensorflow.python.data.ops.dataset_ops.DatasetStructure object at 0x1349b25c0>, <tensorflow.python.data.ops.dataset_ops.DatasetStructure object at 0x1349b27b8>, <tensorflow.python.data.ops.dataset_ops.DatasetStructure object at 0x1349b29b0>), types: (<tensorflow.python.data.ops.dataset_ops.DatasetStructure object at 0x1349b25c0>, <tensorflow.python.data.ops.dataset_ops.DatasetStructure object at 0x1349b27b8>, <tensorflow.python.data.ops.dataset_ops.DatasetStructure object at 0x1349b29b0>)>

好的,再次使用迭代器技巧:

windowed_iter = windowed.__iter__()
windowed_iter.next()

输出

(<_VariantDataset shapes: (), types: tf.float32>,
 <_VariantDataset shapes: (), types: tf.float32>,
 <_VariantDataset shapes: (), types: tf.float32>)

什么? WindowDataset的迭代器还可以返回其他数据集对象的元组吗?
我希望此WindowDataset中的第一项是具有值[[1.,4.,5。],[2.,4.,6。]]的张量。也许这仍然是正确的,但是从这三元组数据集中,这对我来说并不容易理解。
好的。让我们得到他们的迭代器...

vd = windowed_iter.get_next()
vd0, vd1, vd2 = vd[0], vd[1], vd[2]
vd0i, vd1i, vd2i = vd0.__iter__(), vd1.__iter__(), vd2.__iter__()
print(vd0i.next(), vd1i.next(), vd2i.next())

输出

(<tf.Tensor: id=357, shape=(), dtype=float32, numpy=1.0>,
 <tf.Tensor: id=358, shape=(), dtype=float32, numpy=4.0>,
 <tf.Tensor: id=359, shape=(), dtype=float32, numpy=5.0>)

如您所见,此工作流程迅速变得一团糟。我喜欢Tf2.0如何尝试使框架更具交互性和pythonic风格。是否也有符合该愿景的数据集api的良好示例?

最佳答案

我也有类似的情况。我最终使用了 zip

train_dataset = train_dataset.window(10, shift=5)
for step_dataset in train_dataset:
    for (images, labels, paths) in zip(*step_dataset):
        train_step(images, labels)

关于python - 在tensorflow 2.0中调试 `tf.data.Dataset`操作的建议,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56157125/

10-09 06:53