secretflow.ml.nn.sl.backend.tensorflow#
secretflow.ml.nn.sl.backend.tensorflow.sl_base#
sl model base
Classes:
|
|
|
|
|
|
|
|
alias of |
|
alias of |
- class secretflow.ml.nn.sl.backend.tensorflow.sl_base.SLBaseModel(builder_base: Callable, builder_fuse: Optional[Callable] = None)[source]#
Bases:
ABCMethods:
__init__(builder_base[, builder_fuse])fuse_net(hiddens)
- class secretflow.ml.nn.sl.backend.tensorflow.sl_base.SLBaseModule(*args, **kwargs)[source]#
Bases:
ABC,ModuleMethods:
forward(x)Defines the computation performed at every call.
set_weights(weights)get_gradients([parameters])set_gradients(gradients[, parameters])Attributes:
- abstract forward(x)[source]#
Defines the computation performed at every call.
Should be overridden by all subclasses.
Note
Although the recipe for forward pass needs to be defined within this function, one should call the
Moduleinstance afterwards instead of this since the former takes care of running the registered hooks while the latter silently ignores them.
- set_gradients(gradients: List[Union[Tensor, ndarray]], parameters: Optional[List[Tensor]] = None)[source]#
- training: bool#
- class secretflow.ml.nn.sl.backend.tensorflow.sl_base.SLBaseTFModel(builder_base: Callable[[], Model], builder_fuse: Callable[[], Model], dp_strategy: DPStrategy, compressor: Compressor, random_seed: Optional[int] = None, **kwargs)[source]#
Bases:
SLBaseModelMethods:
__init__(builder_base, builder_fuse, ...[, ...])fuse_op(x, y)set_steps_per_epoch(steps_per_epoch)build_dataset_from_numeric(*x[, y, s_w, ...])build tf.data.Dataset
build_dataset_from_builder(*x[, y, s_w, ...])build tf.data.Dataset
set_dataset_stage(data_set[, stage, has_y, ...])base_forward([stage, compress])compute hidden embedding :param stage: Which stage of the base forward :param compress: Whether to compress cross device data.
base_backward(gradient[, compress])backward on fusenet
init_training(callbacks[, epochs, steps, ...])on_epoch_begin(epoch)on_train_batch_begin([step])on_train_batch_end([step])on_validation(val_logs)on_epoch_end(epoch)set_sample_weight(sample_weight[, stage])fuse_net(*forward_data[, _num_returns, compress])Fuses the hidden layer and calculates the reverse gradient only on the side with the label
evaluate(*forward_data[, compress])Returns the loss value & metrics values for the model in test mode.
metrics()predict(*forward_data[, compress])Generates output predictions for the input hidden layer features.
save_base_model(base_model_path, **kwargs)save_fuse_model(fuse_model_path, **kwargs)load_base_model(base_model_path, **kwargs)load_fuse_model(fuse_model_path, **kwargs)export_base_model(model_path[, save_format])export_fuse_model(model_path[, save_format])get_privacy_spent(step[, orders])Get accountant of dp mechanism.
- __init__(builder_base: Callable[[], Model], builder_fuse: Callable[[], Model], dp_strategy: DPStrategy, compressor: Compressor, random_seed: Optional[int] = None, **kwargs)[source]#
- build_dataset_from_numeric(*x: List[ndarray], y: Optional[ndarray] = None, s_w: Optional[ndarray] = None, batch_size=32, buffer_size=128, shuffle=False, repeat_count=1, stage='train', random_seed=1234)[source]#
build tf.data.Dataset
- Parameters:
x – feature, FedNdArray or HDataFrame
y – label, FedNdArray or HDataFrame
s_w – sample weight, FedNdArray or HDataFrame
batch_size – Number of samples per gradient update
buffer_size – buffer size for shuffling
shuffle – whether shuffle the dataset or not
repeat_count – num of repeats
stage – stage of this datset
random_seed – Prg seed for shuffling
- build_dataset_from_builder(*x: List[ndarray], y: Optional[ndarray] = None, s_w: Optional[ndarray] = None, batch_size=-1, shuffle=False, buffer_size=256, random_seed=1234, stage='train', dataset_builder: Optional[Callable] = None)[source]#
build tf.data.Dataset
- Parameters:
x – feature, FedNdArray or HDataFrame
y – label, FedNdArray or HDataFrame
s_w – sample weight, FedNdArray or HDataFrame
stage – stage of this datset
dataset_builder – dataset build callable function of worker
- base_forward(stage='train', compress: bool = False) ForwardData[source]#
compute hidden embedding :param stage: Which stage of the base forward :param compress: Whether to compress cross device data.
Returns: hidden embedding
- base_backward(gradient, compress: bool = False)[source]#
backward on fusenet
- Parameters:
gradient – gradient of fusenet hidden layer
compress – Whether to decompress gradient.
- fuse_net(*forward_data: List[ForwardData], _num_returns: int = 2, compress: bool = False)[source]#
Fuses the hidden layer and calculates the reverse gradient only on the side with the label
- Parameters:
forward_data – A list of ForwardData containing hidden layers, losses, etc. that are uploaded by each party for computation.
compress – Whether to decompress/compress data.
- Returns:
gradient Of hiddens
- evaluate(*forward_data: List[ForwardData], compress: bool = False)[source]#
Returns the loss value & metrics values for the model in test mode.
- Parameters:
forward_data – A list of data dictionaries containing hidden layers, losses, etc. that are uploaded by each party for computation.
compress – Whether to decompress input data.
- Returns:
map of model metrics.
- predict(*forward_data: List[ForwardData], compress: bool = False)[source]#
Generates output predictions for the input hidden layer features.
- Parameters:
forward_data – A list of data dictionaries containing hidden layers, that are uploaded by each party for computation.
compress – Whether to decompress input data.
- Returns:
Array(s) of predictions.
- class secretflow.ml.nn.sl.backend.tensorflow.sl_base.ModelPartition(model_fn, optim_fn, loss_fn, dataloader_fn)[source]#
Bases:
objectMethods:
__init__(model_fn, optim_fn, loss_fn, ...)get_one_batch([name])forward([used_name, external_input])backward([used_name, gradients, external_input])apply_gradients([gradients])set_weights(weights)call_model_fn(fn_name, *args, **kwargs)
- secretflow.ml.nn.sl.backend.tensorflow.sl_base.PYUSLTFModel[source]#
alias of
ActorProxy(PYUSLTFModel)Methods:__init__(*args, **kwargs)Abstraction device object base class.
base_backward(gradient[, compress])backward on fusenet
base_forward([stage, compress])compute hidden embedding :param stage: Which stage of the base forward :param compress: Whether to compress cross device data.
build_dataset_from_builder(*x[, y, s_w, ...])build tf.data.Dataset
build_dataset_from_numeric(*x[, y, s_w, ...])build tf.data.Dataset
evaluate(*forward_data[, compress])Returns the loss value & metrics values for the model in test mode.
export_base_model(model_path[, save_format])export_fuse_model(model_path[, save_format])fuse_net(*forward_data[, _num_returns, compress])Fuses the hidden layer and calculates the reverse gradient only on the side with the label
get_base_losses()get_base_weights()get_basenet_output_num()get_fuse_weights()get_privacy_spent(step[, orders])Get accountant of dp mechanism.
get_skip_gradient()get_stop_training()init_data()init_training(callbacks[, epochs, steps, ...])load_base_model(base_model_path, **kwargs)load_fuse_model(fuse_model_path, **kwargs)metrics()on_epoch_begin(epoch)on_epoch_end(epoch)on_train_batch_begin([step])on_train_batch_end([step])on_train_begin()on_train_end()on_validation(val_logs)predict(*forward_data[, compress])Generates output predictions for the input hidden layer features.
reset_metrics()save_base_model(base_model_path, **kwargs)save_fuse_model(fuse_model_path, **kwargs)set_dataset_stage(data_set[, stage, has_y, ...])set_sample_weight(sample_weight[, stage])set_steps_per_epoch(steps_per_epoch)wrap_local_metrics()
- secretflow.ml.nn.sl.backend.tensorflow.sl_base.PYUModel[source]#
alias of
ActorProxy(PYUModel)Methods:__init__(*args, **kwargs)Abstraction device object base class.
apply_gradients([gradients])backward([used_name, gradients, external_input])call_model_fn(fn_name, *args, **kwargs)forward([used_name, external_input])get_one_batch([name])get_weights()optim_step()set_weights(weights)zero_grad()
secretflow.ml.nn.sl.backend.tensorflow.utils#
Classes:
|
Decorator to define a function with a custom loss. |
|
|
|
ForwardData is a dataclass for data uploaded by each party to label party for computation. |
Functions:
|
|
|
- class secretflow.ml.nn.sl.backend.tensorflow.utils.custom_loss(func: Callable)[source]#
Bases:
objectDecorator to define a function with a custom loss.
This decorator allows to define loss functions with additional keyword arguments. These keyword arguments must match the results of model’s forward pass.
Examples
>>> import tensorflow as tf >>> # define model >>> class MyModel(tf.keras.Model): >>> def call(self, inputs, **kwargs): >>> # do forward pass >>> return None, y_pred, {'kwarg1': kwarg1, 'kwarg2': kwarg2} >>> # define loss function >>> @custom_loss >>> def my_loss(y_true, y_pred, kwarg1 = None, kwarg2 = None): >>> # cumpute loss >>> pass >>> # compile model with custom loss function >>> model = MyModel(...) >>> model.compile( >>> loss=my_loss, >>> optimizer=tf.keras.optimizers.Adam(0.01), >>> metrics=['acc'], >>> )
Note: custom_loss, my_loss and MyModel need to be added to custom_objects when loading the model.
Methods:
__init__(func)with_kwargs(kwargs)from_config(config)
- class secretflow.ml.nn.sl.backend.tensorflow.utils.TensorInfo(name: str = None, tensor_name: str = None, dtype: str = None, shape: List[int] = None)[source]#
Bases:
objectAttributes:
Methods:
__init__([name, tensor_name, dtype, shape])- name: str = None#
- tensor_name: str = None#
- dtype: str = None#
- shape: List[int] = None#
- __init__(name: Optional[str] = None, tensor_name: Optional[str] = None, dtype: Optional[str] = None, shape: Optional[List[int]] = None) None#
- class secretflow.ml.nn.sl.backend.tensorflow.utils.ForwardData(hidden: Optional[Union[Any, List[Any]]] = None, losses: Optional[Any] = None)[source]#
Bases:
objectForwardData is a dataclass for data uploaded by each party to label party for computation.
hidden: base model hidden layers outputs losses: the sum of base model losses should added up to fuse model loss
Attributes:
Methods:
__init__([hidden, losses])- losses: Any = None#
- __init__(hidden: Optional[Union[Any, List[Any]]] = None, losses: Optional[Any] = None) None#