code-loader 1.0.66.dev3__py3-none-any.whl → 1.0.68a0__py3-none-any.whl

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.
@@ -196,6 +196,7 @@ class CustomLayerHandler:
196
196
  init_arg_names: List[str]
197
197
  call_arg_names: List[str]
198
198
  use_custom_latent_space: bool = False
199
+ build: bool = True
199
200
 
200
201
 
201
202
  @dataclass
@@ -1,7 +1,5 @@
1
1
  from enum import Enum
2
2
 
3
- from code_loader.contract.datasetclasses import ConfusionMatrixElement # type: ignore
4
- from code_loader.contract.enums import ConfusionMatrixValue, MetricDirection # type: ignore
5
3
  from code_loader.default_metrics import mean_absolute_percentage_error_dimension_reduced, \
6
4
  mean_absolute_error_dimension_reduced, mean_squared_logarithmic_error_dimension_reduced, \
7
5
  mean_squared_error_dimension_reduced, categorical_crossentropy, binary_crossentropy
@@ -21,12 +21,18 @@ class Metric(Enum):
21
21
 
22
22
  def binary_crossentropy(ground_truth: np.array, prediction: np.array) -> np.array:
23
23
  ground_truth, prediction = flatten_non_batch_dims(ground_truth, prediction)
24
- return -(ground_truth * np.log(prediction) + (1 - ground_truth) * np.log(1 - prediction)).mean(axis=1).astype(np.float32)
24
+ epsilon = 1e-07
25
+ prediction = np.clip(prediction, epsilon, 1.0 - epsilon)
26
+ return -(ground_truth * np.log(prediction) + (1 - ground_truth) *
27
+ np.log(1 - prediction)).sum(axis=1).astype(np.float32)
25
28
 
26
29
 
27
30
  def categorical_crossentropy(ground_truth: np.array, prediction: np.array) -> np.array:
28
31
  ground_truth, prediction = flatten_non_batch_dims(ground_truth, prediction)
29
- return -(ground_truth * np.log(prediction)).mean(axis=1).astype(np.float32)
32
+ prediction = prediction / np.sum(prediction, axis=1)
33
+ epsilon = 1e-07
34
+ prediction = np.clip(prediction, epsilon, 1.0 - epsilon)
35
+ return -(ground_truth * np.log(prediction)).sum(axis=1).astype(np.float32)
30
36
 
31
37
  def accuracy_reduced(ground_truth: np.array, prediction: np.array) -> np.array:
32
38
  ground_truth, prediction = flatten_non_batch_dims(ground_truth, prediction)
@@ -33,6 +33,7 @@ class LeapBinder:
33
33
  setup_container (DatasetIntegrationSetup): Container to hold setup configurations.
34
34
  cache_container (Dict[str, Any]): Cache container to store intermediate data.
35
35
  """
36
+
36
37
  def __init__(self) -> None:
37
38
  self.setup_container = DatasetIntegrationSetup()
38
39
  self.cache_container: Dict[str, Any] = {"word_to_index": {}}
@@ -352,7 +353,8 @@ class LeapBinder:
352
353
  self.setup_container.metadata.append(MetadataHandler(name, function))
353
354
 
354
355
  def set_custom_layer(self, custom_layer: Type[Any], name: str, inspect_layer: bool = False,
355
- kernel_index: Optional[int] = None, use_custom_latent_space: bool = False) -> None:
356
+ kernel_index: Optional[int] = None, use_custom_latent_space: bool = False,
357
+ build: bool = True) -> None:
356
358
  """
357
359
  Set a custom layer for the model.
358
360
 
@@ -377,12 +379,14 @@ class LeapBinder:
377
379
  custom_layer.kernel_index = kernel_index
378
380
 
379
381
  if use_custom_latent_space and not hasattr(custom_layer, custom_latent_space_attribute):
380
- raise Exception(f"{custom_latent_space_attribute} function has not been set for custom layer: {custom_layer.__name__}")
382
+ raise Exception(
383
+ f"{custom_latent_space_attribute} function has not been set for custom layer: {custom_layer.__name__}")
381
384
 
382
385
  init_args = inspect.getfullargspec(custom_layer.__init__)[0][1:]
383
386
  call_args = inspect.getfullargspec(custom_layer.call)[0][1:]
384
387
  self.setup_container.custom_layers[name] = CustomLayerHandler(name, custom_layer, init_args, call_args,
385
- use_custom_latent_space=use_custom_latent_space)
388
+ use_custom_latent_space=use_custom_latent_space,
389
+ build=build)
386
390
 
387
391
  def check_preprocess(self, preprocess_result: Dict[DataStateEnum, PreprocessResponse]) -> None:
388
392
  preprocess_handler = self.setup_container.preprocess
@@ -490,7 +494,3 @@ class LeapBinder:
490
494
 
491
495
  def set_batch_size_to_validate(self, batch_size: int) -> None:
492
496
  self.batch_size_to_validate = batch_size
493
-
494
-
495
-
496
-
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: code-loader
3
- Version: 1.0.66.dev3
3
+ Version: 1.0.68a0
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -1,14 +1,13 @@
1
1
  LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
2
2
  code_loader/__init__.py,sha256=6MMWr0ObOU7hkqQKgOqp4Zp3I28L7joGC9iCbQYtAJg,241
3
- code_loader/code_inegration_processes_manager.py,sha256=XslWOPeNQk4RAFJ_f3tP5Oe3EgcIR7BE7Y8r9Ty73-o,3261
4
3
  code_loader/contract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- code_loader/contract/datasetclasses.py,sha256=L_fSdSvf-eKoez2uBJ8VjfrKedEP0szNOPvaUvsWeRQ,6973
4
+ code_loader/contract/datasetclasses.py,sha256=3tL8v5bKoWUNiHln5CF95-CrvOP4jai3iIqc5KTKGr0,6996
6
5
  code_loader/contract/enums.py,sha256=6Lo7p5CUog68Fd31bCozIuOgIp_IhSiPqWWph2k3OGU,1602
7
6
  code_loader/contract/exceptions.py,sha256=jWqu5i7t-0IG0jGRsKF4DjJdrsdpJjIYpUkN1F4RiyQ,51
8
7
  code_loader/contract/responsedataclasses.py,sha256=RSx9m_R3LawhK5o1nAcO3hfp2F9oJYtxZr_bpP3bTmw,4005
9
8
  code_loader/contract/visualizer_classes.py,sha256=zD7SVgI1R_DaGby3FPJY2rFphK162P7F2hRTHp2xUuM,12428
10
- code_loader/default_losses.py,sha256=dyYfYkud0JvNnogsAnin2KGJ9SZ0_uSJI2cJxqH7-xs,1319
11
- code_loader/default_metrics.py,sha256=_evlQ3m5vaOU-5VeLHzlO38A-00_XKarkcRXFznhjr0,4780
9
+ code_loader/default_losses.py,sha256=NoOQym1106bDN5dcIk56Elr7ZG5quUHArqfP5-Nyxyo,1139
10
+ code_loader/default_metrics.py,sha256=v16Mrt2Ze1tXPgfKywGVdRSrkaK4CKLNQztN1UdVqIY,5010
12
11
  code_loader/experiment_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
12
  code_loader/experiment_api/api.py,sha256=a7wh6Hhe7IaVxu46eV2soSz-yxnmXG3ipU1BBtsEAaQ,2493
14
13
  code_loader/experiment_api/cli_config_utils.py,sha256=n6JMyNrquxql3KKxHhAP8jAzezlRT-PV2KWI95kKsm0,1140
@@ -20,14 +19,14 @@ code_loader/experiment_api/types.py,sha256=MY8xFARHwdVA7p4dxyhD60ShmttgTvb4qdp1o
20
19
  code_loader/experiment_api/utils.py,sha256=XZHtxge12TS4H4-8PjV3sKuhp8Ud6ojAiIzTZJEqBqc,3304
21
20
  code_loader/experiment_api/workingspace_config_utils.py,sha256=DLzXQCg4dgTV_YgaSbeTVzq-2ja_SQw4zi7LXwKL9cY,990
22
21
  code_loader/inner_leap_binder/__init__.py,sha256=koOlJyMNYzGbEsoIbXathSmQ-L38N_pEXH_HvL7beXU,99
23
- code_loader/inner_leap_binder/leapbinder.py,sha256=o57Pj-iY61-OBuTjK-jYUKCJ0g2pPWbbqitv_e75Bps,25959
22
+ code_loader/inner_leap_binder/leapbinder.py,sha256=uU1jU6rsw8kFd_iUBE_m6SzOirIdiiccqgzLRAS8zEY,26101
24
23
  code_loader/inner_leap_binder/leapbinder_decorators.py,sha256=P42U-sqsPKZgsaAzmX8y13F2N3CogeTzU1Iozj4S0GY,20778
25
24
  code_loader/leaploader.py,sha256=K__WKfqtKwEch40au177Po10EUX7gm0PJzcV6kpUMlo,22212
26
25
  code_loader/leaploaderbase.py,sha256=aHlqWDZRacIdBefeB9goYVnpApaNN2FT24uPIWKkCeQ,3090
27
26
  code_loader/utils.py,sha256=aw2i_fqW_ADjLB66FWZd9DfpCQ7mPdMyauROC5Nd51I,2197
28
27
  code_loader/visualizers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
28
  code_loader/visualizers/default_visualizers.py,sha256=Ffx5VHVOe5ujBOsjBSxN_aIEVwFSQ6gbhTMG5aUS-po,2305
30
- code_loader-1.0.66.dev3.dist-info/LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
31
- code_loader-1.0.66.dev3.dist-info/METADATA,sha256=ddrUc-_y21jCdkK0nIhs6qNmguXO02A1sKC4LRW-lEQ,854
32
- code_loader-1.0.66.dev3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
33
- code_loader-1.0.66.dev3.dist-info/RECORD,,
29
+ code_loader-1.0.68a0.dist-info/LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
30
+ code_loader-1.0.68a0.dist-info/METADATA,sha256=AfcuMlL6hB8YgvZ9wFa1dSs2PAIJUKlcjuf0D30T2DQ,851
31
+ code_loader-1.0.68a0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
32
+ code_loader-1.0.68a0.dist-info/RECORD,,
@@ -1,83 +0,0 @@
1
- # mypy: ignore-errors
2
- import traceback
3
- from dataclasses import dataclass
4
-
5
- from typing import List, Tuple, Optional
6
-
7
- from multiprocessing import Process, Queue
8
-
9
- from code_loader.leap_loader_parallelized_base import LeapLoaderParallelizedBase
10
- from code_loader.leaploader import LeapLoader
11
- from code_loader.contract.enums import DataStateEnum
12
- from code_loader.metric_calculator_parallelized import MetricCalculatorParallelized
13
- from code_loader.samples_generator_parallelized import SamplesGeneratorParallelized
14
-
15
-
16
- @dataclass
17
- class SampleSerializableError:
18
- state: DataStateEnum
19
- index: int
20
- leap_script_trace: str
21
- exception_as_str: str
22
-
23
-
24
- class CodeIntegrationProcessesManager:
25
- def __init__(self, code_path: str, code_entry_name: str, n_workers: Optional[int] = 2,
26
- max_samples_in_queue: int = 128) -> None:
27
- self.metric_calculator_parallelized = MetricCalculatorParallelized(code_path, code_entry_name)
28
- self.samples_generator_parallelized = SamplesGeneratorParallelized(code_path, code_entry_name)
29
-
30
- def _create_and_start_process(self) -> Process:
31
- process = self.multiprocessing_context.Process(
32
- target=CodeIntegrationProcessesManager._process_func,
33
- args=(self.code_path, self.code_entry_name, self._inputs_waiting_to_be_process,
34
- self._ready_processed_results))
35
- process.daemon = True
36
- process.start()
37
- return process
38
-
39
- def _run_and_warm_first_process(self):
40
- process = self._create_and_start_process()
41
- self.processes = [process]
42
-
43
- # needed in order to make sure the preprocess func runs once in nonparallel
44
- self._start_process_inputs([(DataStateEnum.training, 0)])
45
- self._get_next_ready_processed_result()
46
-
47
- def _operation_decider(self):
48
- if self.metric_calculator_parallelized._ready_processed_results.empty() and not \
49
- self.metric_calculator_parallelized._inputs_waiting_to_be_process.empty():
50
- return 'metric'
51
-
52
- if self.samples_generator_parallelized._ready_processed_results.empty() and not \
53
- self.samples_generator_parallelized._inputs_waiting_to_be_process.empty():
54
- return 'dataset'
55
-
56
-
57
-
58
-
59
- @staticmethod
60
- def _process_func(code_path: str, code_entry_name: str,
61
- samples_to_process: Queue, ready_samples: Queue,
62
- metrics_to_process: Queue, ready_metrics: Queue) -> None:
63
- import os
64
- os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
65
-
66
- leap_loader = LeapLoader(code_path, code_entry_name)
67
- while True:
68
-
69
- # decide on sample or metric to process
70
- state, idx = samples_to_process.get(block=True)
71
- leap_loader._preprocess_result()
72
- try:
73
- sample = leap_loader.get_sample(state, idx)
74
- except Exception as e:
75
- leap_script_trace = traceback.format_exc().split('File "<string>"')[-1]
76
- ready_samples.put(SampleSerializableError(state, idx, leap_script_trace, str(e)))
77
- continue
78
-
79
- ready_samples.put(sample)
80
-
81
- def generate_samples(self, sample_identities: List[Tuple[DataStateEnum, int]]):
82
- return self.start_process_inputs(sample_identities)
83
-