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]