Demo

Import the required dependencies

[6]:
from typing import Tuple

from numpy import arange
from tensorflow import Tensor
from tensorflow.python.data import Dataset

from tfdatacompose.map.map import Map
from tfdatacompose.filter.filter import Filter
from tfdatacompose.pipeline import Pipeline
from tfdatacompose.skip import Skip
from tfdatacompose.take import Take

Define the transformations

[7]:
class Double(Map):
    def map(self, number: int) -> Tuple[Tensor, ...]:
        return number * 2

class RemoveOdd(Filter):
    def filter(self, number: int) -> bool:
        return number % 2 == 0

Create a transformation pipeline using our custom transformations

[8]:
pipeline = Pipeline([
    Skip(10),
    RemoveOdd(),
    Double(),
    Take(10),
])

pipeline
[8]:
<tfdatacompose.pipeline.Pipeline at 0x123e8efe0>

Apply our transformation to a dataset

[9]:
dataset = Dataset.from_tensor_slices(range(100))
result = pipeline(dataset)

dataset, result
[9]:
(<_TensorSliceDataset element_spec=TensorSpec(shape=(), dtype=tf.int32, name=None)>,
 <_TakeDataset element_spec=TensorSpec(shape=(), dtype=tf.int32, name=None)>)

Print the result of our dataset

[10]:
resultList = list(result.as_numpy_iterator())
resultList
[10]:
[20, 24, 28, 32, 36, 40, 44, 48, 52, 56]