Source code for bayesflow.adapters.transforms.take
from collections.abc import Sequence
import keras.ops as ops
from bayesflow.utils.serialization import serializable, serialize
from bayesflow.types import Tensor
from .elementwise_transform import ElementwiseTransform
[docs]
@serializable(package="bayesflow.adapters")
class Take(ElementwiseTransform):
"""
A transform to reduce the dimensionality of arrays output by the summary network
Example: adapter.take("x", np.arange(0,3), axis=-1)
"""
def __init__(self, indices: Sequence[int], axis: int = -1):
super().__init__()
self.indices = indices
self.axis = axis
[docs]
def forward(self, data: Tensor, **kwargs) -> Tensor:
return ops.take(data, self.indices, axis=self.axis)
[docs]
def inverse(self, data: Tensor, **kwargs) -> Tensor:
return data
[docs]
def get_config(self) -> dict:
config = {"indices": self.indices, "axis": self.axis}
return serialize(config)