Что эквивалентно df.head()
Panda для наборов данных tf?
Следуя документации здесь Я построил следующие примеры игрушек:
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)
output
<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()
output
(<_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())
output
(<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 пытается сделать фреймворк более интерактивным и питонным.Есть ли хорошие примеры API данных, соответствующих этому видению?