code-loader 1.0.174.dev1__tar.gz → 1.0.174.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/PKG-INFO +1 -1
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/contract/datasetclasses.py +1 -1
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/inner_leap_binder/leapbinder.py +44 -1
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/inner_leap_binder/leapbinder_decorators.py +20 -21
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/pyproject.toml +1 -1
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/LICENSE +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/README.md +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/__init__.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/contract/responsedataclasses.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/leaploader.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/leaploaderbase.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/mixpanel_tracker.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/plot_functions/__init__.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/plot_functions/plot_functions.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/plot_functions/visualize.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/utils.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/visualizers/default_visualizers.py +0 -0
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/contract/datasetclasses.py
RENAMED
|
@@ -264,7 +264,7 @@ class DatasetIntegrationSetup:
|
|
|
264
264
|
prediction_types: List[PredictionTypeHandler] = field(default_factory=list)
|
|
265
265
|
custom_loss_handlers: List[CustomLossHandler] = field(default_factory=list)
|
|
266
266
|
metrics: List[MetricHandler] = field(default_factory=list)
|
|
267
|
-
instance_metrics: List[
|
|
267
|
+
instance_metrics: List[InstanceMetricHandler] = field(default_factory=list)
|
|
268
268
|
custom_layers: Dict[str, CustomLayerHandler] = field(default_factory=dict)
|
|
269
269
|
custom_latent_space: Optional[CustomLatentSpaceHandler] = None
|
|
270
270
|
|
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/inner_leap_binder/leapbinder.py
RENAMED
|
@@ -12,7 +12,7 @@ from code_loader.contract.datasetclasses import SectionCallableInterface, InputH
|
|
|
12
12
|
CustomCallableInterfaceMultiArgs, ConfusionMatrixCallableInterfaceMultiArgs, LeapData, \
|
|
13
13
|
CustomMultipleReturnCallableInterfaceMultiArgs, DatasetBaseHandler, custom_latent_space_attribute, \
|
|
14
14
|
RawInputsForHeatmap, VisualizerHandlerData, MetricHandlerData, CustomLossHandlerData, SamplePreprocessResponse, \
|
|
15
|
-
ElementInstanceMasksHandler, InstanceCallableInterface, CustomLatentSpaceHandler
|
|
15
|
+
ElementInstanceMasksHandler, InstanceCallableInterface, CustomLatentSpaceHandler, InstanceMetricHandler
|
|
16
16
|
from code_loader.contract.enums import LeapDataType, DataStateEnum, DataStateType, MetricDirection, DatasetMetadataType
|
|
17
17
|
from code_loader.contract.mapping import NodeConnection, NodeMapping, NodeMappingType
|
|
18
18
|
from code_loader.contract.responsedataclasses import DatasetTestResultPayload, LeapAnalysisConfiguration
|
|
@@ -335,6 +335,49 @@ class LeapBinder:
|
|
|
335
335
|
metric_handler_data = MetricHandlerData(name, regular_arg_names, direction, compute_insights)
|
|
336
336
|
self.setup_container.metrics.append(MetricHandler(metric_handler_data, function))
|
|
337
337
|
|
|
338
|
+
def add_custom_instance_metric(self,
|
|
339
|
+
function: Union[CustomCallableInterfaceMultiArgs,
|
|
340
|
+
CustomMultipleReturnCallableInterfaceMultiArgs,
|
|
341
|
+
ConfusionMatrixCallableInterfaceMultiArgs],
|
|
342
|
+
name: str,
|
|
343
|
+
direction: Optional[
|
|
344
|
+
Union[MetricDirection, Dict[str, MetricDirection]]] = MetricDirection.Downward,
|
|
345
|
+
compute_insights: Optional[Union[bool, Dict[str, bool]]] = None) -> None:
|
|
346
|
+
"""
|
|
347
|
+
Add a custom metric to the setup.
|
|
348
|
+
|
|
349
|
+
Args:
|
|
350
|
+
function (Union[CustomCallableInterfaceMultiArgs, CustomMultipleReturnCallableInterfaceMultiArgs, ConfusionMatrixCallableInterfaceMultiArgs]): The custom metric function.
|
|
351
|
+
name (str): The name of the custom metric.
|
|
352
|
+
direction (Optional[Union[MetricDirection, Dict[str, MetricDirection]]]): The direction of the metric, either
|
|
353
|
+
MetricDirection.Upward or MetricDirection.Downward, in case custom metric return a dictionary of metrics we can
|
|
354
|
+
supply a dictionary of directions correspondingly.
|
|
355
|
+
- MetricDirection.Upward: Indicates that higher values of the metric are better and should be maximized.
|
|
356
|
+
- MetricDirection.Downward: Indicates that lower values of the metric are better and should be minimized.
|
|
357
|
+
compute_insights (Union[bool, Dict[str, bool]]): Whether to compute insights or not. in case custom metric
|
|
358
|
+
return a dictionary of metrics we can supply a dictionary of values correspondingly
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
Example:
|
|
363
|
+
def custom_metric_function(y_true, y_pred):
|
|
364
|
+
return np.mean(np.abs(y_true - y_pred))
|
|
365
|
+
|
|
366
|
+
leap_binder.add_custom_metric(custom_metric_function, name='custom_metric', direction=MetricDirection.Downward)
|
|
367
|
+
"""
|
|
368
|
+
|
|
369
|
+
regular_arg_names = inspect.getfullargspec(function)[0]
|
|
370
|
+
preprocess_response_arg_name = None
|
|
371
|
+
for arg_name, arg_type in inspect.getfullargspec(function).annotations.items():
|
|
372
|
+
if arg_type == SamplePreprocessResponse:
|
|
373
|
+
if preprocess_response_arg_name is not None:
|
|
374
|
+
raise Exception("only one argument can be of type SamplePreprocessResponse")
|
|
375
|
+
preprocess_response_arg_name = arg_name
|
|
376
|
+
regular_arg_names.remove(arg_name)
|
|
377
|
+
|
|
378
|
+
metric_handler_data = MetricHandlerData(name, regular_arg_names, direction, compute_insights)
|
|
379
|
+
self.setup_container.instance_metrics.append(InstanceMetricHandler(metric_handler_data, function))
|
|
380
|
+
|
|
338
381
|
def add_prediction(self, name: str, labels: List[str], channel_dim: int = -1, prediction_index: Optional[int]=None) -> None:
|
|
339
382
|
"""
|
|
340
383
|
Add prediction labels to the setup.
|
|
@@ -879,8 +879,7 @@ def tensorleap_custom_metric(name: str,
|
|
|
879
879
|
|
|
880
880
|
def tensorleap_custom_instances_metric(name: str,
|
|
881
881
|
direction: Union[MetricDirection, Dict[str, MetricDirection]] = _UNSET,
|
|
882
|
-
compute_insights: Optional[Union[bool, Dict[str, bool]]] = None
|
|
883
|
-
connects_to=None):
|
|
882
|
+
compute_insights: Optional[Union[bool, Dict[str, bool]]] = None):
|
|
884
883
|
name_to_unique_name = defaultdict(set)
|
|
885
884
|
|
|
886
885
|
def decorating_function(
|
|
@@ -943,21 +942,21 @@ def tensorleap_custom_instances_metric(name: str,
|
|
|
943
942
|
err_message +
|
|
944
943
|
f"Invalid type for compute_insights['{k}']: expected bool, got type {type(v).__name__}."
|
|
945
944
|
)
|
|
946
|
-
if connects_to is not None:
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
945
|
+
# if connects_to is not None:
|
|
946
|
+
# valid_types = (str, list, tuple, set)
|
|
947
|
+
# if not isinstance(connects_to, valid_types):
|
|
948
|
+
# raise TypeError(
|
|
949
|
+
# err_message +
|
|
950
|
+
# f"`connects_to` must be one of {valid_types}, got type {type(connects_to).__name__}."
|
|
951
|
+
# )
|
|
952
|
+
# if isinstance(connects_to, (list, tuple, set)):
|
|
953
|
+
# invalid_elems = [f"{type(e).__name__}" for e in connects_to if not isinstance(e, str)]
|
|
954
|
+
# if invalid_elems:
|
|
955
|
+
# raise TypeError(
|
|
956
|
+
# err_message +
|
|
957
|
+
# f"All elements in `connects_to` must be strings, "
|
|
958
|
+
# f"but found element types: {invalid_elems}."
|
|
959
|
+
# )
|
|
961
960
|
|
|
962
961
|
_validate_decorators_signature()
|
|
963
962
|
|
|
@@ -1037,11 +1036,11 @@ def tensorleap_custom_instances_metric(name: str,
|
|
|
1037
1036
|
except (TypeError, ValueError):
|
|
1038
1037
|
pass
|
|
1039
1038
|
|
|
1040
|
-
leap_binder.
|
|
1039
|
+
leap_binder.add_custom_instance_metric(inner_without_validate, name, direction, compute_insights)
|
|
1041
1040
|
|
|
1042
|
-
if connects_to is not None:
|
|
1043
|
-
|
|
1044
|
-
|
|
1041
|
+
# if connects_to is not None:
|
|
1042
|
+
# arg_names = leap_binder.setup_container.metrics[-1].metric_handler_data.arg_names
|
|
1043
|
+
# _add_mapping_connections(connects_to, arg_names, NodeMappingType.Metric, name)
|
|
1045
1044
|
|
|
1046
1045
|
def inner(*args, **kwargs):
|
|
1047
1046
|
if not _call_from_tl_platform:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/contract/responsedataclasses.py
RENAMED
|
File without changes
|
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/contract/visualizer_classes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/cli_config_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/experiment_api/experiment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/inner_leap_binder/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/plot_functions/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/plot_functions/plot_functions.py
RENAMED
|
File without changes
|
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/plot_functions/visualize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.174.dev1 → code_loader-1.0.174.dev3}/code_loader/visualizers/default_visualizers.py
RENAMED
|
File without changes
|