code-loader 1.0.134.dev1__tar.gz → 1.0.135__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.
Files changed (36) hide show
  1. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/PKG-INFO +1 -1
  2. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/default_losses.py +0 -7
  3. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/default_metrics.py +11 -18
  4. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/inner_leap_binder/leapbinder.py +39 -8
  5. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/visualizers/default_visualizers.py +16 -11
  6. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/pyproject.toml +1 -1
  7. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/LICENSE +0 -0
  8. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/README.md +0 -0
  9. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/__init__.py +0 -0
  10. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/contract/__init__.py +0 -0
  11. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/contract/datasetclasses.py +0 -0
  12. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/contract/enums.py +0 -0
  13. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/contract/exceptions.py +0 -0
  14. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/contract/mapping.py +0 -0
  15. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/contract/responsedataclasses.py +0 -0
  16. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/contract/visualizer_classes.py +0 -0
  17. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/experiment_api/__init__.py +0 -0
  18. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/experiment_api/api.py +0 -0
  19. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/experiment_api/cli_config_utils.py +0 -0
  20. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/experiment_api/client.py +0 -0
  21. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/experiment_api/epoch.py +0 -0
  22. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/experiment_api/experiment.py +0 -0
  23. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/experiment_api/experiment_context.py +0 -0
  24. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/experiment_api/types.py +0 -0
  25. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/experiment_api/utils.py +0 -0
  26. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
  27. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/inner_leap_binder/__init__.py +0 -0
  28. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/inner_leap_binder/leapbinder_decorators.py +0 -0
  29. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/leaploader.py +0 -0
  30. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/leaploaderbase.py +0 -0
  31. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/mixpanel_tracker.py +0 -0
  32. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/plot_functions/__init__.py +0 -0
  33. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/plot_functions/plot_functions.py +0 -0
  34. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/plot_functions/visualize.py +0 -0
  35. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/utils.py +0 -0
  36. {code_loader-1.0.134.dev1 → code_loader-1.0.135}/code_loader/visualizers/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: code-loader
3
- Version: 1.0.134.dev1
3
+ Version: 1.0.135
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -3,7 +3,6 @@ from enum import Enum
3
3
  from code_loader.default_metrics import mean_absolute_percentage_error_dimension_reduced, \
4
4
  mean_absolute_error_dimension_reduced, mean_squared_logarithmic_error_dimension_reduced, \
5
5
  mean_squared_error_dimension_reduced, categorical_crossentropy, binary_crossentropy
6
- from code_loader.inner_leap_binder.leapbinder_decorators import tensorleap_custom_loss
7
6
 
8
7
 
9
8
  class LossName(Enum):
@@ -23,9 +22,3 @@ loss_name_to_function = {
23
22
  LossName.CategoricalCrossentropy.name: categorical_crossentropy,
24
23
  LossName.BinaryCrossentropy.name: binary_crossentropy
25
24
  }
26
-
27
-
28
- for loss_name, func in loss_name_to_function.items():
29
- @tensorleap_custom_loss(loss_name)
30
- def loss_func(ground_truth, prediction):
31
- return func(ground_truth, prediction)
@@ -6,7 +6,17 @@ import numpy as np
6
6
 
7
7
  from code_loader.contract.datasetclasses import ConfusionMatrixElement # type: ignore
8
8
  from code_loader.contract.enums import ConfusionMatrixValue, MetricDirection # type: ignore
9
- from code_loader.inner_leap_binder.leapbinder_decorators import tensorleap_custom_metric
9
+
10
+
11
+ class Metric(Enum):
12
+ MeanSquaredError = 'MeanSquaredError'
13
+ MeanSquaredLogarithmicError = 'MeanSquaredLogarithmicError'
14
+ MeanAbsoluteError = 'MeanAbsoluteError'
15
+ MeanAbsolutePercentageError = 'MeanAbsolutePercentageError'
16
+ Accuracy = 'Accuracy'
17
+ ConfusionMatrixClassification = 'ConfusionMatrixClassification'
18
+ CategoricalCrossentropy = 'CategoricalCrossentropy'
19
+ BinaryCrossentropy = 'BinaryCrossentropy'
10
20
 
11
21
 
12
22
  def binary_crossentropy(ground_truth: np.array, prediction: np.array) -> np.array:
@@ -24,7 +34,6 @@ def categorical_crossentropy(ground_truth: np.array, prediction: np.array) -> np
24
34
  prediction = np.clip(prediction, epsilon, 1.0 - epsilon)
25
35
  return -(ground_truth * np.log(prediction)).sum(axis=1).astype(np.float32)
26
36
 
27
-
28
37
  def accuracy_reduced(ground_truth: np.array, prediction: np.array) -> np.array:
29
38
  ground_truth, prediction = flatten_non_batch_dims(ground_truth, prediction)
30
39
  return np.mean((np.round(prediction).astype(np.bool_) == ground_truth.astype(np.bool_)), axis=1)
@@ -79,17 +88,6 @@ def confusion_matrix_classification_metric(ground_truth, prediction) -> List[Lis
79
88
  return ret
80
89
 
81
90
 
82
- class Metric(Enum):
83
- MeanSquaredError = 'MeanSquaredError'
84
- MeanSquaredLogarithmicError = 'MeanSquaredLogarithmicError'
85
- MeanAbsoluteError = 'MeanAbsoluteError'
86
- MeanAbsolutePercentageError = 'MeanAbsolutePercentageError'
87
- Accuracy = 'Accuracy'
88
- ConfusionMatrixClassification = 'ConfusionMatrixClassification'
89
- CategoricalCrossentropy = 'CategoricalCrossentropy'
90
- BinaryCrossentropy = 'BinaryCrossentropy'
91
-
92
-
93
91
  metrics_names_to_functions_and_direction = {
94
92
  Metric.MeanSquaredError.name: (mean_squared_error_dimension_reduced, MetricDirection.Downward),
95
93
  Metric.MeanSquaredLogarithmicError.name: (
@@ -102,8 +100,3 @@ metrics_names_to_functions_and_direction = {
102
100
  Metric.CategoricalCrossentropy.name: (categorical_crossentropy, MetricDirection.Downward),
103
101
  Metric.BinaryCrossentropy.name: (binary_crossentropy, MetricDirection.Downward)
104
102
  }
105
-
106
- for metric_name, (func, direction) in metrics_names_to_functions_and_direction.items():
107
- @tensorleap_custom_metric(metric_name, direction)
108
- def metric_func(ground_truth, prediction):
109
- return func(ground_truth, prediction)
@@ -1,5 +1,8 @@
1
1
  import inspect
2
- from typing import Callable, Optional, Dict, Any, Type, Union
2
+ from typing import Callable, List, Optional, Dict, Any, Type, Union
3
+
4
+ import numpy as np
5
+ import numpy.typing as npt
3
6
 
4
7
  from code_loader.contract.datasetclasses import SectionCallableInterface, InputHandler, \
5
8
  GroundTruthHandler, MetadataHandler, DatasetIntegrationSetup, VisualizerHandler, PreprocessResponse, \
@@ -9,16 +12,17 @@ from code_loader.contract.datasetclasses import SectionCallableInterface, InputH
9
12
  CustomMultipleReturnCallableInterfaceMultiArgs, DatasetBaseHandler, custom_latent_space_attribute, \
10
13
  RawInputsForHeatmap, VisualizerHandlerData, MetricHandlerData, CustomLossHandlerData, SamplePreprocessResponse, \
11
14
  ElementInstanceMasksHandler, InstanceCallableInterface, CustomLatentSpaceHandler
12
- from code_loader.contract.enums import DataStateEnum, DataStateType, DatasetMetadataType
15
+ from code_loader.contract.enums import LeapDataType, DataStateEnum, DataStateType, MetricDirection, DatasetMetadataType
13
16
  from code_loader.contract.mapping import NodeConnection, NodeMapping, NodeMappingType
14
17
  from code_loader.contract.responsedataclasses import DatasetTestResultPayload
15
18
  from code_loader.contract.visualizer_classes import map_leap_data_type_to_visualizer_class
16
-
17
- from code_loader.default_metrics import *
18
- from code_loader.visualizers.default_visualizers import *
19
- from code_loader.default_losses import *
20
-
19
+ from code_loader.default_losses import loss_name_to_function
20
+ from code_loader.default_metrics import metrics_names_to_functions_and_direction
21
21
  from code_loader.utils import to_numpy_return_wrapper, get_shape, to_numpy_return_masks_wrapper
22
+ from code_loader.visualizers.default_visualizers import DefaultVisualizer, \
23
+ default_graph_visualizer, \
24
+ default_image_visualizer, default_horizontal_bar_visualizer, default_word_visualizer, \
25
+ default_image_mask_visualizer, default_text_mask_visualizer, default_raw_data_visualizer, default_video_visualizer
22
26
 
23
27
 
24
28
  mapping_runtime_mode_env_var_mame = '__MAPPING_RUNTIME_MODE__'
@@ -40,13 +44,40 @@ class LeapBinder:
40
44
  self.cache_container: Dict[str, Any] = {"word_to_index": {}}
41
45
  self._visualizer_names: List[str] = list()
42
46
  self._encoder_names: List[str] = list()
47
+ self._extend_with_default_visualizers()
48
+ self._extend_with_default_metrics()
49
+ self._extend_with_default_losses()
43
50
 
44
51
  self.mapping_connections: List[NodeConnection] = []
45
52
  self.integration_test_func: Optional[Callable[[str, PreprocessResponse], Any]] = None
46
53
 
47
54
  self.batch_size_to_validate: Optional[int] = None
48
55
 
49
-
56
+ def _extend_with_default_visualizers(self) -> None:
57
+ self.set_visualizer(function=default_image_visualizer, name=DefaultVisualizer.Image.value,
58
+ visualizer_type=LeapDataType.Image)
59
+ self.set_visualizer(function=default_video_visualizer, name=DefaultVisualizer.Video.value,
60
+ visualizer_type=LeapDataType.Video)
61
+ self.set_visualizer(function=default_graph_visualizer, name=DefaultVisualizer.Graph.value,
62
+ visualizer_type=LeapDataType.Graph)
63
+ self.set_visualizer(function=default_raw_data_visualizer, name=DefaultVisualizer.RawData.value,
64
+ visualizer_type=LeapDataType.Text)
65
+ self.set_visualizer(function=default_horizontal_bar_visualizer, name=DefaultVisualizer.HorizontalBar.value,
66
+ visualizer_type=LeapDataType.HorizontalBar)
67
+ self.set_visualizer(function=default_word_visualizer, name=DefaultVisualizer.Text.value,
68
+ visualizer_type=LeapDataType.Text)
69
+ self.set_visualizer(function=default_image_mask_visualizer, name=DefaultVisualizer.ImageMask.value,
70
+ visualizer_type=LeapDataType.ImageMask)
71
+ self.set_visualizer(function=default_text_mask_visualizer, name=DefaultVisualizer.TextMask.value,
72
+ visualizer_type=LeapDataType.TextMask)
73
+
74
+ def _extend_with_default_losses(self) -> None:
75
+ for loss_name, func in loss_name_to_function.items():
76
+ self.add_custom_loss(func, loss_name)
77
+
78
+ def _extend_with_default_metrics(self) -> None:
79
+ for metric_name, (func, direction) in metrics_names_to_functions_and_direction.items():
80
+ self.add_custom_metric(func, metric_name, direction)
50
81
 
51
82
  def set_visualizer(self, function: VisualizerCallableInterface,
52
83
  name: str,
@@ -1,36 +1,42 @@
1
+ from enum import Enum
2
+
1
3
  import numpy as np
2
4
  import numpy.typing as npt
3
5
 
4
- from code_loader.contract.enums import LeapDataType
5
6
  from code_loader.contract.visualizer_classes import LeapImage, LeapGraph, LeapHorizontalBar, LeapText, \
6
7
  LeapImageMask, LeapTextMask, LeapVideo
7
- from code_loader.inner_leap_binder.leapbinder_decorators import tensorleap_custom_visualizer
8
8
  from code_loader.utils import rescale_min_max
9
9
 
10
10
 
11
+ class DefaultVisualizer(Enum):
12
+ Image = 'Image'
13
+ Video = 'Video'
14
+ Graph = 'Graph'
15
+ HorizontalBar = 'HorizontalBar'
16
+ Text = 'Text'
17
+ ImageMask = 'ImageMask'
18
+ TextMask = 'TextMask'
19
+ RawData = 'RawData'
11
20
 
12
21
 
13
-
14
- @tensorleap_custom_visualizer('Image', LeapDataType.Image)
15
22
  def default_image_visualizer(data: npt.NDArray[np.float32]) -> LeapImage:
16
23
  rescaled_data = rescale_min_max(data[0])
17
24
  return LeapImage(rescaled_data)
18
25
 
19
- @tensorleap_custom_visualizer('Video', LeapDataType.Video)
26
+
20
27
  def default_video_visualizer(data: npt.NDArray[np.float32]) -> LeapVideo:
21
28
  return LeapVideo(data[0])
22
29
 
23
- @tensorleap_custom_visualizer('Graph', LeapDataType.Graph)
30
+
24
31
  def default_graph_visualizer(data: npt.NDArray[np.float32]) -> LeapGraph:
25
32
  return LeapGraph(data[0])
26
33
 
27
- @tensorleap_custom_visualizer('HorizontalBar', LeapDataType.HorizontalBar)
34
+
28
35
  def default_horizontal_bar_visualizer(data: npt.NDArray[np.float32]) -> LeapHorizontalBar:
29
36
  labels = [str(index) for index in range(data.shape[-1])]
30
37
  return LeapHorizontalBar(data[0], labels)
31
38
 
32
39
 
33
- @tensorleap_custom_visualizer('Text', LeapDataType.Text)
34
40
  def default_word_visualizer(data: npt.NDArray[np.float32]) -> LeapText:
35
41
  if len(data.shape) == 2 and data.shape[0] == 1:
36
42
  data = data[0]
@@ -39,11 +45,11 @@ def default_word_visualizer(data: npt.NDArray[np.float32]) -> LeapText:
39
45
  words = [str(index[0]) if type(index) is list else str(index) for index in data]
40
46
  return LeapText(words)
41
47
 
42
- @tensorleap_custom_visualizer('RawData', LeapDataType.Text)
48
+
43
49
  def default_raw_data_visualizer(data: npt.NDArray[np.float32]) -> LeapText:
44
50
  return LeapText([str(data)])
45
51
 
46
- @tensorleap_custom_visualizer('ImageMask', LeapDataType.ImageMask)
52
+
47
53
  def default_image_mask_visualizer(mask: npt.NDArray[np.float32], image: npt.NDArray[np.float32]) -> LeapImageMask:
48
54
  if image.shape[0] == 1:
49
55
  image = image[0]
@@ -62,7 +68,6 @@ def default_image_mask_visualizer(mask: npt.NDArray[np.float32], image: npt.NDAr
62
68
  return LeapImageMask(mask.astype(np.uint8), image.astype(np.float32), labels)
63
69
 
64
70
 
65
- @tensorleap_custom_visualizer('TextMask', LeapDataType.TextMask)
66
71
  def default_text_mask_visualizer(mask: npt.NDArray[np.float32], text_data: npt.NDArray[np.float32]) -> LeapTextMask:
67
72
  mask = mask[0]
68
73
  text_data = text_data[0]
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "code-loader"
3
- version = "1.0.134.dev1"
3
+ version = "1.0.135"
4
4
  description = ""
5
5
  authors = ["dorhar <doron.harnoy@tensorleap.ai>"]
6
6
  license = "MIT"