pyerualjetwork 4.2.4b2__py3-none-any.whl → 4.2.6__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.
- pyerualjetwork/__init__.py +1 -1
- pyerualjetwork/plan.py +0 -1
- pyerualjetwork/plan_cuda.py +0 -1
- pyerualjetwork/planeat.py +21 -32
- pyerualjetwork/planeat_cuda.py +23 -35
- {pyerualjetwork-4.2.4b2.dist-info → pyerualjetwork-4.2.6.dist-info}/METADATA +2 -5
- {pyerualjetwork-4.2.4b2.dist-info → pyerualjetwork-4.2.6.dist-info}/RECORD +9 -9
- {pyerualjetwork-4.2.4b2.dist-info → pyerualjetwork-4.2.6.dist-info}/WHEEL +0 -0
- {pyerualjetwork-4.2.4b2.dist-info → pyerualjetwork-4.2.6.dist-info}/top_level.txt +0 -0
pyerualjetwork/__init__.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
__version__ = "4.2.
|
1
|
+
__version__ = "4.2.6"
|
2
2
|
__update__ = "* Changes: https://github.com/HCB06/PyerualJetwork/blob/main/CHANGES\n* PyerualJetwork Homepage: https://github.com/HCB06/PyerualJetwork/tree/main\n* PyerualJetwork document: https://github.com/HCB06/PyerualJetwork/blob/main/Welcome_to_PyerualJetwork/PYERUALJETWORK_USER_MANUEL_AND_LEGAL_INFORMATION(EN).pdf\n* YouTube tutorials: https://www.youtube.com/@HasanCanBeydili"
|
3
3
|
|
4
4
|
def print_version(__version__):
|
pyerualjetwork/plan.py
CHANGED
@@ -196,7 +196,6 @@ def learner(x_train, y_train, optimizer, fit_start, strategy='accuracy', gen=Non
|
|
196
196
|
```python
|
197
197
|
genetic_optimizer = lambda *args, **kwargs: planeat.evolver(*args,
|
198
198
|
activation_add_prob=0.85,
|
199
|
-
mutations=True,
|
200
199
|
strategy='aggressive',
|
201
200
|
**kwargs)
|
202
201
|
|
pyerualjetwork/plan_cuda.py
CHANGED
@@ -211,7 +211,6 @@ def learner(x_train, y_train, optimizer, fit_start, strategy='accuracy', gen=Non
|
|
211
211
|
```python
|
212
212
|
genetic_optimizer = lambda *args, **kwargs: planeat_cuda.evolver(*args,
|
213
213
|
activation_add_prob=0.85,
|
214
|
-
mutations=True,
|
215
214
|
strategy='aggressive',
|
216
215
|
**kwargs)
|
217
216
|
|
pyerualjetwork/planeat.py
CHANGED
@@ -15,6 +15,7 @@ ANAPLAN document: https://github.com/HCB06/Anaplan/blob/main/Welcome_to_Anaplan/
|
|
15
15
|
import numpy as np
|
16
16
|
import random
|
17
17
|
import math
|
18
|
+
import copy
|
18
19
|
|
19
20
|
### LIBRARY IMPORTS ###
|
20
21
|
from .plan import feed_forward
|
@@ -79,11 +80,9 @@ def evolver(weights,
|
|
79
80
|
policy='aggressive',
|
80
81
|
bad_genomes_selection_prob=None,
|
81
82
|
bar_status=True,
|
82
|
-
strategy='normal_selective',
|
83
|
-
target_fitness='max',
|
83
|
+
strategy='normal_selective',
|
84
84
|
bad_genomes_mutation_prob=None,
|
85
|
-
activation_mutate_prob=0.5,
|
86
|
-
save_best_genome=True,
|
85
|
+
activation_mutate_prob=0.5,
|
87
86
|
fitness_bias=None,
|
88
87
|
cross_over_mode='tpm',
|
89
88
|
activation_mutate_add_prob=0.5,
|
@@ -139,8 +138,6 @@ def evolver(weights,
|
|
139
138
|
|
140
139
|
Default: 'aggressive'.
|
141
140
|
|
142
|
-
target_fitness (str, optional): Target fitness strategy for PLANEAT optimization. ('max' maximizes fitness, 'min' minimizes fitness.) Default: 'max'.
|
143
|
-
|
144
141
|
fitness_bias (float, optional): Fitness bias must be a probability value between 0 and 1 that determines the effect of fitness on the crossover process. Default: Determined by the `strategy`.
|
145
142
|
|
146
143
|
bad_genomes_mutation_prob (float, optional): The probability of applying mutation to the bad genomes.
|
@@ -150,9 +147,6 @@ def evolver(weights,
|
|
150
147
|
activation_mutate_prob (float, optional): The probability of applying mutation to the activation functions.
|
151
148
|
Must be in the range [0, 1]. Default is 0.5 (50%).
|
152
149
|
|
153
|
-
save_best_genom (bool, optional): If True, ensures that the best genomes are saved and not mutated
|
154
|
-
or altered during reproduction. Default is True.
|
155
|
-
|
156
150
|
cross_over_mode (str, optional): Specifies the crossover method to use. Options:
|
157
151
|
- 'tpm': Two-Point Matrix Crossover.
|
158
152
|
Default is 'tpm'.
|
@@ -270,10 +264,9 @@ def evolver(weights,
|
|
270
264
|
raise ValueError("genome population size must be even number. for example: not 99, make 100 or 98.")
|
271
265
|
|
272
266
|
|
273
|
-
### FITNESS IS SORTED IN ASCENDING
|
267
|
+
### FITNESS IS SORTED IN ASCENDING ORDER, AND THE WEIGHT AND ACTIVATIONS OF EACH GENOME ARE SORTED ACCORDING TO THIS ORDER:
|
274
268
|
|
275
|
-
|
276
|
-
elif target_fitness == 'min': sort_indices = np.argsort(-fitness)
|
269
|
+
sort_indices = np.argsort(fitness)
|
277
270
|
|
278
271
|
fitness = fitness[sort_indices]
|
279
272
|
weights = weights[sort_indices]
|
@@ -284,11 +277,11 @@ def evolver(weights,
|
|
284
277
|
|
285
278
|
good_weights = weights[slice_center:]
|
286
279
|
bad_weights = weights[:slice_center]
|
287
|
-
best_weight = good_weights[-1]
|
280
|
+
best_weight = np.copy(good_weights[-1])
|
288
281
|
|
289
282
|
good_activations = list(activation_potentiations[slice_center:])
|
290
283
|
bad_activations = list(activation_potentiations[:slice_center])
|
291
|
-
best_activations =
|
284
|
+
best_activations = copy.deepcopy(good_activations[-1])
|
292
285
|
|
293
286
|
|
294
287
|
### PLANEAT IS APPLIED ACCORDING TO THE SPECIFIED POLICY, STRATEGY, AND PROBABILITY CONFIGURATION:
|
@@ -296,16 +289,16 @@ def evolver(weights,
|
|
296
289
|
bar_format = loading_bars()[0]
|
297
290
|
|
298
291
|
if bar_status: progress = initialize_loading_bar(len(bad_weights), desc="GENERATION: " + str(what_gen), bar_format=bar_format, ncols=50)
|
299
|
-
normalized_fitness =
|
292
|
+
normalized_fitness = normalization(fitness, dtype=dtype)
|
300
293
|
|
301
294
|
best_fitness = normalized_fitness[-1]
|
302
295
|
epsilon = np.finfo(float).eps
|
303
296
|
|
304
297
|
child_W = np.copy(bad_weights)
|
305
|
-
child_act =
|
298
|
+
child_act = copy.deepcopy(bad_activations)
|
306
299
|
|
307
300
|
mutated_W = np.copy(bad_weights)
|
308
|
-
mutated_act =
|
301
|
+
mutated_act = copy.deepcopy(bad_activations)
|
309
302
|
|
310
303
|
for i in range(len(bad_weights)):
|
311
304
|
|
@@ -363,9 +356,8 @@ def evolver(weights,
|
|
363
356
|
|
364
357
|
if bar_status: progress.update(1)
|
365
358
|
|
366
|
-
|
367
|
-
|
368
|
-
child_act[-1] = best_activations
|
359
|
+
child_W[0] = best_weight
|
360
|
+
child_act[0] = best_activations
|
369
361
|
|
370
362
|
weights = np.vstack((child_W, mutated_W))
|
371
363
|
activation_potentiations = child_act + mutated_act
|
@@ -399,9 +391,9 @@ def evolver(weights,
|
|
399
391
|
print(" MEAN FITNESS: ", str(round(np.mean(fitness), 2)))
|
400
392
|
print(" MIN FITNESS: ", str(round(min(fitness), 2)) + '\n')
|
401
393
|
|
402
|
-
print(" BEST GENOME ACTIVATION LENGTH: ", str(len(
|
403
|
-
print(" BEST GENOME INDEX: ", str(
|
404
|
-
print(" NOTE:
|
394
|
+
print(" BEST GENOME ACTIVATION LENGTH: ", str(len(best_activations)))
|
395
|
+
print(" BEST GENOME INDEX: ", str(0))
|
396
|
+
print(" NOTE: The returned genome at the first index is the best of the previous generation." + '\n')
|
405
397
|
|
406
398
|
|
407
399
|
return weights, activation_potentiations
|
@@ -622,7 +614,7 @@ def cross_over(first_parent_W,
|
|
622
614
|
|
623
615
|
if potential_activation_selection_add > activation_selection_add_prob:
|
624
616
|
|
625
|
-
threshold = threshold / succes
|
617
|
+
threshold = abs(threshold / succes)
|
626
618
|
new_threshold = threshold
|
627
619
|
|
628
620
|
while True:
|
@@ -644,7 +636,7 @@ def cross_over(first_parent_W,
|
|
644
636
|
|
645
637
|
if potential_activation_selection_change_prob > activation_selection_change_prob:
|
646
638
|
|
647
|
-
threshold = threshold / succes
|
639
|
+
threshold = abs(threshold / succes)
|
648
640
|
new_threshold = threshold
|
649
641
|
|
650
642
|
while True:
|
@@ -726,27 +718,24 @@ def mutation(weight,
|
|
726
718
|
row_end = weight.shape[0]
|
727
719
|
col_end = weight.shape[1]
|
728
720
|
|
721
|
+
max_threshold = row_end * col_end
|
722
|
+
|
729
723
|
threshold = threshold * genome_fitness
|
730
|
-
performance_control = 0
|
731
724
|
new_threshold = threshold
|
732
725
|
|
733
|
-
|
726
|
+
for _ in range(max_threshold):
|
734
727
|
|
735
728
|
selected_row = int(random.uniform(start, row_end))
|
736
729
|
selected_col = int(random.uniform(start, col_end))
|
737
730
|
|
738
731
|
weight[selected_row, selected_col] = random.uniform(-1, 1)
|
739
732
|
|
740
|
-
if
|
733
|
+
if max_threshold > new_threshold:
|
741
734
|
new_threshold += threshold
|
742
|
-
performance_control += 1
|
743
|
-
pass
|
744
735
|
|
745
736
|
else:
|
746
737
|
break
|
747
738
|
|
748
|
-
if performance_control == row_end * col_end:
|
749
|
-
break
|
750
739
|
|
751
740
|
activation_mutate_prob = 1 - activation_mutate_prob
|
752
741
|
potential_activation_mutation = random.uniform(0, 1)
|
pyerualjetwork/planeat_cuda.py
CHANGED
@@ -16,6 +16,7 @@ import cupy as cp
|
|
16
16
|
import numpy as np
|
17
17
|
import random
|
18
18
|
import math
|
19
|
+
import copy
|
19
20
|
|
20
21
|
|
21
22
|
### LIBRARY IMPORTS ###
|
@@ -81,11 +82,9 @@ def evolver(weights,
|
|
81
82
|
policy='aggressive',
|
82
83
|
bad_genomes_selection_prob=None,
|
83
84
|
bar_status=True,
|
84
|
-
strategy='normal_selective',
|
85
|
-
target_fitness='max',
|
85
|
+
strategy='normal_selective',
|
86
86
|
bad_genomes_mutation_prob=None,
|
87
87
|
activation_mutate_prob=0.5,
|
88
|
-
save_best_genome=True,
|
89
88
|
fitness_bias=None,
|
90
89
|
cross_over_mode='tpm',
|
91
90
|
activation_mutate_add_prob=0.5,
|
@@ -141,8 +140,6 @@ def evolver(weights,
|
|
141
140
|
|
142
141
|
Default: 'aggressive'.
|
143
142
|
|
144
|
-
target_fitness (str, optional): Target fitness strategy for PLANEAT optimization. ('max' maximizes fitness, 'min' minimizes fitness.) Default: 'max'.
|
145
|
-
|
146
143
|
fitness_bias (float, optional): Fitness bias must be a probability value between 0 and 1 that determines the effect of fitness on the crossover process. Default: Determined by the `strategy`.
|
147
144
|
|
148
145
|
bad_genomes_mutation_prob (float, optional): The probability of applying mutation to the bad genomes.
|
@@ -152,9 +149,6 @@ def evolver(weights,
|
|
152
149
|
activation_mutate_prob (float, optional): The probability of applying mutation to the activation functions.
|
153
150
|
Must be in the range [0, 1]. Default is 0.5 (50%).
|
154
151
|
|
155
|
-
save_best_genome (bool, optional): If True, ensures that the best genomes are saved and not mutated
|
156
|
-
or altered during reproduction. Default is True.
|
157
|
-
|
158
152
|
cross_over_mode (str, optional): Specifies the crossover method to use. Options:
|
159
153
|
- 'tpm': Two-Point Matrix Crossover.
|
160
154
|
Default is 'tpm'.
|
@@ -270,10 +264,9 @@ def evolver(weights,
|
|
270
264
|
else:
|
271
265
|
raise ValueError("genome population size must be even number. for example: not 99, make 100 or 98.")
|
272
266
|
|
273
|
-
### FITNESS LIST IS SORTED IN ASCENDING
|
267
|
+
### FITNESS LIST IS SORTED IN ASCENDING ORDER, AND THE WEIGHT AND ACTIVATIONS OF EACH GENOME ARE SORTED ACCORDING TO THIS ORDER:
|
274
268
|
|
275
|
-
|
276
|
-
elif target_fitness == 'min': sort_indices = cp.argsort(-fitness)
|
269
|
+
sort_indices = cp.argsort(fitness)
|
277
270
|
|
278
271
|
fitness = fitness[sort_indices]
|
279
272
|
weights = weights[sort_indices]
|
@@ -284,11 +277,11 @@ def evolver(weights,
|
|
284
277
|
|
285
278
|
good_weights = weights[slice_center:]
|
286
279
|
bad_weights = weights[:slice_center]
|
287
|
-
best_weight = good_weights[-1]
|
280
|
+
best_weight = cp.copy(good_weights[-1])
|
288
281
|
|
289
282
|
good_activations = list(activation_potentiations[slice_center:])
|
290
283
|
bad_activations = list(activation_potentiations[:slice_center])
|
291
|
-
best_activations =
|
284
|
+
best_activations = copy.deepcopy(good_activations[-1])
|
292
285
|
|
293
286
|
|
294
287
|
### PLANEAT IS APPLIED ACCORDING TO THE SPECIFIED POLICY, STRATEGY, AND PROBABILITY CONFIGURATION:
|
@@ -296,16 +289,16 @@ def evolver(weights,
|
|
296
289
|
bar_format = loading_bars()[0]
|
297
290
|
|
298
291
|
if bar_status: progress = initialize_loading_bar(len(bad_weights), desc="GENERATION: " + str(what_gen), bar_format=bar_format, ncols=50)
|
299
|
-
normalized_fitness =
|
292
|
+
normalized_fitness = normalization(fitness, dtype=dtype)
|
300
293
|
|
301
294
|
best_fitness = normalized_fitness[-1]
|
302
295
|
epsilon = cp.finfo(float).eps
|
303
296
|
|
304
297
|
child_W = cp.copy(bad_weights)
|
305
|
-
child_act =
|
298
|
+
child_act = copy.deepcopy(bad_activations)
|
306
299
|
|
307
300
|
mutated_W = cp.copy(bad_weights)
|
308
|
-
mutated_act =
|
301
|
+
mutated_act = copy.deepcopy(bad_activations)
|
309
302
|
|
310
303
|
|
311
304
|
for i in range(len(bad_weights)):
|
@@ -364,9 +357,8 @@ def evolver(weights,
|
|
364
357
|
|
365
358
|
if bar_status: progress.update(1)
|
366
359
|
|
367
|
-
|
368
|
-
|
369
|
-
child_act[-1] = best_activations
|
360
|
+
child_W[0] = best_weight
|
361
|
+
child_act[0] = best_activations
|
370
362
|
|
371
363
|
weights = cp.vstack((child_W, mutated_W))
|
372
364
|
activation_potentiations = child_act + mutated_act
|
@@ -394,13 +386,13 @@ def evolver(weights,
|
|
394
386
|
print(" ACTIVATION SELECTION RATE (THRESHOLD VALUE FOR SINGLE CROSS OVER):", str(activation_selection_rate) + '\n')
|
395
387
|
|
396
388
|
print("*** Performance ***")
|
397
|
-
print(" MAX
|
398
|
-
print(" MEAN
|
399
|
-
print(" MIN
|
389
|
+
print(" MAX FITNESS: ", str(cp.round(max(fitness), 2)))
|
390
|
+
print(" MEAN FITNESS: ", str(cp.round(cp.mean(fitness), 2)))
|
391
|
+
print(" MIN FITNESS: ", str(cp.round(min(fitness), 2)) + '\n')
|
400
392
|
|
401
|
-
print(" BEST GENOME ACTIVATION LENGTH: ", str(len(
|
402
|
-
print(" BEST GENOME INDEX: ", str(
|
403
|
-
print(" NOTE:
|
393
|
+
print(" BEST GENOME ACTIVATION LENGTH: ", str(len(best_activations)))
|
394
|
+
print(" BEST GENOME INDEX: ", str(0))
|
395
|
+
print(" NOTE: The returned genome at the first index is the best of the previous generation." + '\n')
|
404
396
|
|
405
397
|
|
406
398
|
return weights, activation_potentiations
|
@@ -626,7 +618,7 @@ def cross_over(first_parent_W,
|
|
626
618
|
|
627
619
|
if potential_activation_selection_add > activation_selection_add_prob:
|
628
620
|
|
629
|
-
threshold = threshold / succes
|
621
|
+
threshold = abs(threshold / succes)
|
630
622
|
new_threshold = threshold
|
631
623
|
|
632
624
|
while True:
|
@@ -648,7 +640,7 @@ def cross_over(first_parent_W,
|
|
648
640
|
|
649
641
|
if potential_activation_selection_change_prob > activation_selection_change_prob:
|
650
642
|
|
651
|
-
threshold = threshold / succes
|
643
|
+
threshold = abs(threshold / succes)
|
652
644
|
new_threshold = threshold
|
653
645
|
|
654
646
|
while True:
|
@@ -731,27 +723,23 @@ def mutation(weight,
|
|
731
723
|
row_end = weight.shape[0]
|
732
724
|
col_end = weight.shape[1]
|
733
725
|
|
726
|
+
max_threshold = row_end * col_end
|
727
|
+
|
734
728
|
threshold = threshold * genome_fitness
|
735
729
|
new_threshold = threshold
|
736
|
-
performance_control = 0
|
737
730
|
|
738
|
-
|
731
|
+
for _ in range(max_threshold):
|
739
732
|
|
740
733
|
selected_row = int(random.uniform(start, row_end))
|
741
734
|
selected_col = int(random.uniform(start, col_end))
|
742
735
|
|
743
736
|
weight[selected_row, selected_col] = random.uniform(-1, 1)
|
744
737
|
|
745
|
-
if
|
738
|
+
if max_threshold > new_threshold:
|
746
739
|
new_threshold += threshold
|
747
|
-
performance_control += 1
|
748
|
-
pass
|
749
740
|
|
750
741
|
else:
|
751
742
|
break
|
752
|
-
|
753
|
-
if performance_control >= row_end * col_end:
|
754
|
-
break
|
755
743
|
|
756
744
|
activation_mutate_prob = 1 - activation_mutate_prob
|
757
745
|
potential_activation_mutation = random.uniform(0, 1)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyerualjetwork
|
3
|
-
Version: 4.2.
|
3
|
+
Version: 4.2.6
|
4
4
|
Summary: PyerualJetwork is a machine learning library supported with GPU(CUDA) acceleration written in Python for professionals and researchers including with PLAN algorithm, PLANEAT algorithm (genetic optimization). Also includes data pre-process and memory manegament
|
5
5
|
Author: Hasan Can Beydili
|
6
6
|
Author-email: tchasancan@gmail.com
|
@@ -38,7 +38,6 @@ GitHub Page: https://github.com/HCB06/PyerualJetwork
|
|
38
38
|
Optimized for Visual Studio Code
|
39
39
|
|
40
40
|
requires=[
|
41
|
-
'setuptools==75.6.0',
|
42
41
|
'scipy==1.13.1',
|
43
42
|
'tqdm==4.66.4',
|
44
43
|
'seaborn==0.13.2',
|
@@ -52,8 +51,6 @@ GitHub Page: https://github.com/HCB06/PyerualJetwork
|
|
52
51
|
]
|
53
52
|
|
54
53
|
matplotlib, seaborn, networkx (optional).
|
55
|
-
PyerualJetwork checks and install all dependencies with optional ones for every runing.
|
56
|
-
If your version is higher or lower, PyerualJetwork automaticly delete other versions and installs this versions.
|
57
54
|
|
58
55
|
##############################
|
59
56
|
|
@@ -61,7 +58,7 @@ ABOUT PYERUALJETWORK:
|
|
61
58
|
|
62
59
|
PyerualJetwork is a machine learning library written in Python for professionals, incorporating advanced, unique, new, and modern techniques with optimized GPU acceleration. Its most important component is the PLAN (Potentiation Learning Artificial Neural Network) https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4862342. (THIS ARTICLE IS FIRST VERSION OF PLAN.) MODERN VERSION OF PLAN: https://github.com/HCB06/PyerualJetwork/blob/main/Welcome_to_PLAN/PLAN.pdf
|
63
60
|
Both the PLAN algorithm and the PyerualJetwork library were created by Author, and all rights are reserved by Author.
|
64
|
-
PyerualJetwork is free to use for commercial business and individual users.
|
61
|
+
PyerualJetwork is free to use for commercial business and individual users.
|
65
62
|
As of 12/21/2024, the library includes PLAN and PLANEAT module, but other machine learning modules are expected to be added in the future.
|
66
63
|
|
67
64
|
PyerualJetwork ready for both eager execution(like PyTorch) and static graph(like Tensorflow) concepts because PyerualJetwork using only functions.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
pyerualjetwork/__init__.py,sha256=
|
1
|
+
pyerualjetwork/__init__.py,sha256=P6B7ccTwijjEmfwBjrO7UilDfgAI_hTL-PjplThSqoE,639
|
2
2
|
pyerualjetwork/activation_functions.py,sha256=WWOdMd5pI6ZKe-ieKCIsKAYPQODHuXYxx7tzhA5xjes,11767
|
3
3
|
pyerualjetwork/activation_functions_cuda.py,sha256=KmXJ5Cdig46XAMYakXFPEOlxSxtFJjD21-i3nGtxPjE,11807
|
4
4
|
pyerualjetwork/data_operations.py,sha256=pb5CqJ0Th6fCjTNMCtqQMiwH3KezTxAijacglsKUxmY,14730
|
@@ -11,14 +11,14 @@ pyerualjetwork/metrics.py,sha256=q7MkhnZDRbCjFBDDfUgrl8lBYnUT_1ro1LxeBq105pI,607
|
|
11
11
|
pyerualjetwork/metrics_cuda.py,sha256=73h9GC7XwmnFCVzFEEiPQfF8CwHIz2wsCbxpZrJtYgw,5061
|
12
12
|
pyerualjetwork/model_operations.py,sha256=RKqnh7-MByFosxqme4q4jC1lOndX26O-OVXYV6ZxoEE,12965
|
13
13
|
pyerualjetwork/model_operations_cuda.py,sha256=XnKKq54ZLaqCm-NaJ6d8IToACKcKg2Ttq6moowVRRWo,13365
|
14
|
-
pyerualjetwork/plan.py,sha256=
|
15
|
-
pyerualjetwork/plan_cuda.py,sha256=
|
16
|
-
pyerualjetwork/planeat.py,sha256=
|
17
|
-
pyerualjetwork/planeat_cuda.py,sha256=
|
14
|
+
pyerualjetwork/plan.py,sha256=UzCTFCA9cTv9ITCtsqfJ1g02rCMyescoIV6j1amvYGw,32134
|
15
|
+
pyerualjetwork/plan_cuda.py,sha256=hpXZl3h7B1qAVYW-gZebwKMZd4-ftAZ-u05teOJjsno,33525
|
16
|
+
pyerualjetwork/planeat.py,sha256=cDr0QfOD4FFibcpgsnyQiSpRUwkfYHkBJGqxBnyzx9Q,38893
|
17
|
+
pyerualjetwork/planeat_cuda.py,sha256=NiQfIAqlWC4iVmxKYnrQtKPz-7vAY1yoasOM3rRDvi0,38856
|
18
18
|
pyerualjetwork/ui.py,sha256=wu2BhU1k-w3Kcho5Jtq4SEKe68ftaUeRGneUOSCVDjU,575
|
19
19
|
pyerualjetwork/visualizations.py,sha256=1SKMZaJ80OD2qHUyMxW1IOv8zwmxzMPxclfbeq1Xr4g,28772
|
20
20
|
pyerualjetwork/visualizations_cuda.py,sha256=KbMhfsLlxujy_i3QrwCf734Q-k6d7Zn_7CEbm3gzK9w,29186
|
21
|
-
pyerualjetwork-4.2.
|
22
|
-
pyerualjetwork-4.2.
|
23
|
-
pyerualjetwork-4.2.
|
24
|
-
pyerualjetwork-4.2.
|
21
|
+
pyerualjetwork-4.2.6.dist-info/METADATA,sha256=HISmko-Ho-pe_mZPtA2mBBcXkZYiITyCfPTAp_AT_Ps,7452
|
22
|
+
pyerualjetwork-4.2.6.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
23
|
+
pyerualjetwork-4.2.6.dist-info/top_level.txt,sha256=BRyt62U_r3ZmJpj-wXNOoA345Bzamrj6RbaWsyW4tRg,15
|
24
|
+
pyerualjetwork-4.2.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|