pyerualjetwork 4.0.9__py3-none-any.whl → 4.1.1__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/activation_functions_cuda.py +2 -2
- pyerualjetwork/data_operations_cuda.py +93 -46
- pyerualjetwork/model_operations_cuda.py +4 -2
- pyerualjetwork/plan.py +2 -2
- pyerualjetwork/plan_cuda.py +4 -4
- pyerualjetwork/planeat.py +4 -4
- pyerualjetwork/planeat_cuda.py +4 -4
- {pyerualjetwork-4.0.9.dist-info → pyerualjetwork-4.1.1.dist-info}/METADATA +1 -1
- {pyerualjetwork-4.0.9.dist-info → pyerualjetwork-4.1.1.dist-info}/RECORD +12 -12
- {pyerualjetwork-4.0.9.dist-info → pyerualjetwork-4.1.1.dist-info}/WHEEL +0 -0
- {pyerualjetwork-4.0.9.dist-info → pyerualjetwork-4.1.1.dist-info}/top_level.txt +0 -0
pyerualjetwork/__init__.py
CHANGED
@@ -47,7 +47,7 @@ for package_name in package_names:
|
|
47
47
|
|
48
48
|
print(f"PyerualJetwork is ready to use with {err} errors")
|
49
49
|
|
50
|
-
__version__ = "4.
|
50
|
+
__version__ = "4.1.1"
|
51
51
|
__update__ = "* Note: CUDA modules need cupy. Enter this command in your terminal: 'pip install cupy-cuda12x' or your cuda version.\n* Changes: https://github.com/HCB06/PyerualJetwork/blob/main/CHANGES\n* PyerualJetwork document: https://github.com/HCB06/Anaplan/blob/main/Welcome_to_PyerualJetwork/PYERUALJETWORK_USER_MANUEL_AND_LEGAL_INFORMATION(EN).pdf\n* YouTube tutorials: https://www.youtube.com/@HasanCanBeydili"
|
52
52
|
|
53
53
|
def print_version(__version__):
|
@@ -18,9 +18,9 @@ def spiral_activation(x):
|
|
18
18
|
|
19
19
|
spiral_x = r * cp.cos(theta + r)
|
20
20
|
spiral_y = r * cp.sin(theta + r)
|
21
|
-
|
22
21
|
|
23
|
-
|
22
|
+
|
23
|
+
spiral_output = cp.concatenate([cp.array([spiral_x[0]]), spiral_y])
|
24
24
|
|
25
25
|
return spiral_output
|
26
26
|
|
@@ -81,17 +81,22 @@ def decode_one_hot(encoded_data):
|
|
81
81
|
return decoded_labels
|
82
82
|
|
83
83
|
|
84
|
-
def split(X, y, test_size, random_state, dtype=cp.float32):
|
84
|
+
def split(X, y, test_size, random_state=42, dtype=cp.float32, use_cpu=False):
|
85
85
|
"""
|
86
86
|
Splits the given X (features) and y (labels) data into training and testing subsets.
|
87
87
|
|
88
88
|
Args:
|
89
89
|
X (cupy.ndarray): Features data.
|
90
|
+
|
90
91
|
y (cupy.ndarray): Labels data.
|
92
|
+
|
91
93
|
test_size (float or int): Proportion or number of samples for the test subset.
|
92
|
-
|
94
|
+
|
95
|
+
random_state (int or None): Seed for random state. Default: 42.
|
96
|
+
|
93
97
|
dtype (cupy.dtype): Data type for the arrays. np.float32 by default. Example: cp.float64 or cp.float16. [fp32 for balanced devices, fp64 for strong devices, fp16 for weak devices: not reccomended!] (optional)
|
94
|
-
|
98
|
+
|
99
|
+
use_cpu (bool): If True, output will be same cpu's split function. Default: False.
|
95
100
|
Returns:
|
96
101
|
tuple: x_train, x_test, y_train, y_test as ordered training and testing data subsets.
|
97
102
|
"""
|
@@ -118,11 +123,17 @@ def split(X, y, test_size, random_state, dtype=cp.float32):
|
|
118
123
|
else:
|
119
124
|
raise ValueError("test_size should be float or int.")
|
120
125
|
|
121
|
-
if
|
122
|
-
|
126
|
+
if use_cpu:
|
127
|
+
indices = np.arange(num_samples)
|
128
|
+
np.random.seed(random_state)
|
129
|
+
np.random.shuffle(indices)
|
130
|
+
indices = cp.array(indices)
|
131
|
+
else:
|
132
|
+
if random_state is not None:
|
133
|
+
cp.random.seed(random_state)
|
123
134
|
|
124
|
-
|
125
|
-
|
135
|
+
indices = cp.arange(num_samples)
|
136
|
+
cp.random.shuffle(indices)
|
126
137
|
|
127
138
|
test_indices = indices[:test_size]
|
128
139
|
train_indices = indices[test_size:]
|
@@ -133,16 +144,22 @@ def split(X, y, test_size, random_state, dtype=cp.float32):
|
|
133
144
|
return x_train, x_test, y_train, y_test
|
134
145
|
|
135
146
|
|
136
|
-
def manuel_balancer(x_train, y_train, target_samples_per_class, dtype=cp.float32):
|
147
|
+
def manuel_balancer(x_train, y_train, target_samples_per_class, dtype=cp.float32, use_cpu=False):
|
137
148
|
"""
|
138
149
|
Generates synthetic examples to balance classes to the specified number of examples per class.
|
139
150
|
|
140
151
|
Arguments:
|
152
|
+
|
141
153
|
x_train -- Input dataset (examples) - cupy array format
|
154
|
+
|
142
155
|
y_train -- Class labels (one-hot encoded) - cupy array format
|
156
|
+
|
143
157
|
target_samples_per_class -- Desired number of samples per class
|
158
|
+
|
144
159
|
dtype (cupy.dtype): Data type for the arrays. np.float32 by default. Example: cp.float64 or cp.float16. [fp32 for balanced devices, fp64 for strong devices, fp16 for weak devices: not reccomended!] (optional)
|
145
160
|
|
161
|
+
use_cpu (bool): If True, output will be same cpu's manuel_balancer function. Default: False.
|
162
|
+
|
146
163
|
Returns:
|
147
164
|
x_balanced -- Balanced input dataset (cupy array format)
|
148
165
|
y_balanced -- Balanced class labels (one-hot encoded, cupy array format)
|
@@ -176,8 +193,13 @@ def manuel_balancer(x_train, y_train, target_samples_per_class, dtype=cp.float32
|
|
176
193
|
num_samples = len(class_indices)
|
177
194
|
|
178
195
|
if num_samples > target_samples_per_class:
|
179
|
-
|
180
|
-
|
196
|
+
|
197
|
+
if use_cpu:
|
198
|
+
selected_indices = np.random.choice(
|
199
|
+
class_indices, target_samples_per_class, replace=False)
|
200
|
+
else:
|
201
|
+
selected_indices = cp.random.choice(class_indices, target_samples_per_class, replace=False)
|
202
|
+
|
181
203
|
x_balanced.append(x_train[selected_indices])
|
182
204
|
y_balanced.append(y_train[selected_indices])
|
183
205
|
|
@@ -193,13 +215,19 @@ def manuel_balancer(x_train, y_train, target_samples_per_class, dtype=cp.float32
|
|
193
215
|
additional_labels = cp.zeros((samples_to_add, y_train.shape[1]))
|
194
216
|
|
195
217
|
for i in range(samples_to_add):
|
218
|
+
|
219
|
+
if use_cpu:
|
220
|
+
random_indices = np.random.choice(class_indices.get(), 2, replace=False)
|
221
|
+
else:
|
222
|
+
random_indices = cp.random.choice(class_indices, 2, replace=False)
|
196
223
|
|
197
|
-
random_indices = cp.random.choice(class_indices, 2, replace=False)
|
198
224
|
sample1 = x_train[random_indices[0]]
|
199
225
|
sample2 = x_train[random_indices[1]]
|
200
226
|
|
201
|
-
|
202
|
-
|
227
|
+
if use_cpu:
|
228
|
+
synthetic_sample = sample1 + (sample2 - sample1) * np.random.rand()
|
229
|
+
else:
|
230
|
+
synthetic_sample = sample1 + (sample2 - sample1) * cp.random.rand()
|
203
231
|
|
204
232
|
additional_samples[i] = synthetic_sample
|
205
233
|
additional_labels[i] = y_train[class_indices[0]]
|
@@ -214,7 +242,7 @@ def manuel_balancer(x_train, y_train, target_samples_per_class, dtype=cp.float32
|
|
214
242
|
return x_balanced, y_balanced
|
215
243
|
|
216
244
|
|
217
|
-
def auto_balancer(x_train, y_train, dtype=cp.float32):
|
245
|
+
def auto_balancer(x_train, y_train, dtype=cp.float32, use_cpu=False):
|
218
246
|
|
219
247
|
"""
|
220
248
|
Function to balance the training data across different classes.
|
@@ -226,6 +254,8 @@ def auto_balancer(x_train, y_train, dtype=cp.float32):
|
|
226
254
|
|
227
255
|
dtype (cupy.dtype): Data type for the arrays. np.float32 by default. Example: cp.float64 or cp.float16. [fp32 for balanced devices, fp64 for strong devices, fp16 for weak devices: not reccomended!] (optional)
|
228
256
|
|
257
|
+
use_cpu (bool): If True, output will be same cpu's auto_balancer function. Default: False.
|
258
|
+
|
229
259
|
Returns:
|
230
260
|
tuple: A tuple containing balanced input data and labels.
|
231
261
|
"""
|
@@ -248,44 +278,50 @@ def auto_balancer(x_train, y_train, dtype=cp.float32):
|
|
248
278
|
classes = cp.arange(y_train.shape[1])
|
249
279
|
class_count = len(classes)
|
250
280
|
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
281
|
+
|
282
|
+
ClassIndices = {i: cp.where(cp.array(y_train)[:, i] == 1)[
|
283
|
+
0] for i in range(class_count)}
|
284
|
+
classes = [len(ClassIndices[i]) for i in range(class_count)]
|
285
|
+
|
286
|
+
if len(set(classes)) == 1:
|
287
|
+
print(Fore.WHITE + "INFO: Data have already balanced. from: auto_balancer" + Style.RESET_ALL)
|
288
|
+
return x_train, y_train
|
289
|
+
|
290
|
+
MinCount = min(classes)
|
291
|
+
|
292
|
+
BalancedIndices = []
|
293
|
+
for i in tqdm(range(class_count),leave=False, ascii="▱▰",
|
294
|
+
bar_format= bar_format, desc='Balancing Data',ncols=70):
|
295
|
+
if len(ClassIndices[i]) > MinCount:
|
296
|
+
if use_cpu:
|
297
|
+
SelectedIndices = np.random.choice(
|
298
|
+
ClassIndices[i].get(), MinCount, replace=False)
|
299
|
+
else:
|
266
300
|
SelectedIndices = cp.random.choice(
|
267
301
|
ClassIndices[i], MinCount, replace=False)
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
302
|
+
else:
|
303
|
+
SelectedIndices = ClassIndices[i]
|
304
|
+
BalancedIndices.extend(SelectedIndices)
|
305
|
+
|
306
|
+
BalancedInputs = [x_train[idx] for idx in BalancedIndices]
|
307
|
+
BalancedLabels = [y_train[idx] for idx in BalancedIndices]
|
274
308
|
|
309
|
+
if use_cpu:
|
310
|
+
permutation = np.random.permutation(len(BalancedInputs))
|
311
|
+
else:
|
275
312
|
permutation = cp.random.permutation(len(BalancedInputs))
|
276
|
-
BalancedInputs = cp.array(BalancedInputs)[permutation]
|
277
|
-
BalancedLabels = cp.array(BalancedLabels)[permutation]
|
278
313
|
|
279
|
-
|
280
|
-
|
281
|
-
except:
|
282
|
-
print(Fore.RED + "ERROR: Inputs and labels must be same length check parameters")
|
283
|
-
sys.exit()
|
314
|
+
BalancedInputs = cp.array(BalancedInputs)[permutation]
|
315
|
+
BalancedLabels = cp.array(BalancedLabels)[permutation]
|
284
316
|
|
317
|
+
print(Fore.GREEN + "Data Succesfully Balanced from: " + str(len(x_train)
|
318
|
+
) + " to: " + str(len(BalancedInputs)) + ". from: auto_balancer " + Style.RESET_ALL)
|
319
|
+
|
320
|
+
|
285
321
|
return BalancedInputs, BalancedLabels
|
286
322
|
|
287
323
|
|
288
|
-
def synthetic_augmentation(x_train, y_train, dtype=cp.float32):
|
324
|
+
def synthetic_augmentation(x_train, y_train, dtype=cp.float32, use_cpu=False):
|
289
325
|
"""
|
290
326
|
Generates synthetic examples to balance classes with fewer examples using CuPy.
|
291
327
|
Arguments:
|
@@ -296,6 +332,8 @@ def synthetic_augmentation(x_train, y_train, dtype=cp.float32):
|
|
296
332
|
|
297
333
|
dtype (cupy.dtype): Data type for the arrays. np.float32 by default. Example: cp.float64 or cp.float16. [fp32 for balanced devices, fp64 for strong devices, fp16 for weak devices: not reccomended!] (optional)
|
298
334
|
|
335
|
+
use_cpu (bool): If True, output will be same cpu's synthetic_augmentation function. Default: False.
|
336
|
+
|
299
337
|
Returns:
|
300
338
|
x_train_balanced -- Balanced input dataset (cupy array format)
|
301
339
|
y_train_balanced -- Balanced class labels (one-hot encoded, cupy array format)
|
@@ -336,13 +374,21 @@ def synthetic_augmentation(x_train, y_train, dtype=cp.float32):
|
|
336
374
|
|
337
375
|
if num_samples < max_class_count:
|
338
376
|
while num_samples < max_class_count:
|
339
|
-
|
377
|
+
if use_cpu:
|
378
|
+
random_indices = np.random.choice(
|
379
|
+
class_indices, 2, replace=False)
|
380
|
+
else:
|
381
|
+
random_indices = cp.random.choice(
|
340
382
|
cp.array(class_indices), 2, replace=False)
|
341
383
|
sample1 = x[random_indices[0]]
|
342
384
|
sample2 = x[random_indices[1]]
|
343
385
|
|
344
|
-
|
345
|
-
|
386
|
+
if use_cpu:
|
387
|
+
synthetic_sample = sample1 + \
|
388
|
+
(sample2 - sample1) * np.random.rand()
|
389
|
+
else:
|
390
|
+
synthetic_sample = sample1 + \
|
391
|
+
(sample2 - sample1) * cp.random.rand()
|
346
392
|
|
347
393
|
x_balanced.append(synthetic_sample)
|
348
394
|
y_balanced.append(y[class_indices[0]])
|
@@ -353,6 +399,7 @@ def synthetic_augmentation(x_train, y_train, dtype=cp.float32):
|
|
353
399
|
|
354
400
|
return x_balanced, y_balanced
|
355
401
|
|
402
|
+
|
356
403
|
def standard_scaler(x_train=None, x_test=None, scaler_params=None, dtype=cp.float32):
|
357
404
|
"""
|
358
405
|
Standardizes training and test datasets. x_test may be None.
|
@@ -56,7 +56,7 @@ def save_model(model_name,
|
|
56
56
|
|
57
57
|
class_count = W.shape[0]
|
58
58
|
|
59
|
-
if test_acc
|
59
|
+
if test_acc is not None:
|
60
60
|
test_acc= float(test_acc)
|
61
61
|
|
62
62
|
if weights_type != 'txt' and weights_type != 'npy' and weights_type != 'mat' and weights_type != 'pkl':
|
@@ -70,7 +70,6 @@ def save_model(model_name,
|
|
70
70
|
NeuronCount = 0
|
71
71
|
SynapseCount = 0
|
72
72
|
|
73
|
-
|
74
73
|
try:
|
75
74
|
NeuronCount += cp.shape(W)[0] + cp.shape(W)[1]
|
76
75
|
SynapseCount += cp.shape(W)[0] * cp.shape(W)[1]
|
@@ -91,6 +90,9 @@ def save_model(model_name,
|
|
91
90
|
|
92
91
|
scaler_params.append(' ')
|
93
92
|
|
93
|
+
scaler_params[0] = scaler_params[0].get()
|
94
|
+
scaler_params[1] = scaler_params[1].get()
|
95
|
+
|
94
96
|
data = {'MODEL NAME': model_name,
|
95
97
|
'MODEL TYPE': model_type,
|
96
98
|
'CLASS COUNT': class_count,
|
pyerualjetwork/plan.py
CHANGED
@@ -145,7 +145,7 @@ def fit(
|
|
145
145
|
|
146
146
|
# Training process
|
147
147
|
for index, inp in enumerate(x_train):
|
148
|
-
inp = np.array(inp, copy=False
|
148
|
+
inp = np.array(inp, copy=False).ravel()
|
149
149
|
y_decoded = decode_one_hot(y_train)
|
150
150
|
# Weight updates
|
151
151
|
STPW = feed_forward(inp, STPW, is_training=True, Class=y_decoded[index], activation_potentiation=activation_potentiation, LTD=LTD)
|
@@ -231,7 +231,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat
|
|
231
231
|
tuple: A list for model parameters: [Weight matrix, Test loss, Test Accuracy, [Activations functions]].
|
232
232
|
|
233
233
|
"""
|
234
|
-
print(Fore.WHITE + "\nRemember, optimization on large datasets can be very time-consuming and computationally expensive. Therefore, if you are working with such a dataset, our recommendation is to include activation function: ['circular'] in the 'except_this' parameter unless absolutely necessary, as they can significantly prolong the process. from: learner\n" + Fore.RESET)
|
234
|
+
print(Fore.WHITE + "\nRemember, optimization on large datasets can be very time-consuming and computationally expensive. Therefore, if you are working with such a dataset, our recommendation is to include activation function: ['circular', 'spiral'] in the 'except_this' parameter unless absolutely necessary, as they can significantly prolong the process. from: learner\n" + Fore.RESET)
|
235
235
|
|
236
236
|
activation_potentiation = all_activations()
|
237
237
|
|
pyerualjetwork/plan_cuda.py
CHANGED
@@ -146,7 +146,7 @@ def fit(
|
|
146
146
|
|
147
147
|
# Training process
|
148
148
|
for index, inp in enumerate(x_train):
|
149
|
-
inp = cp.array(inp).ravel()
|
149
|
+
inp = cp.array(inp, copy=False).ravel()
|
150
150
|
y_decoded = decode_one_hot(y_train)
|
151
151
|
# Weight updates
|
152
152
|
STPW = feed_forward(inp, STPW, is_training=True, Class=y_decoded[index], activation_potentiation=activation_potentiation, LTD=LTD)
|
@@ -232,7 +232,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat
|
|
232
232
|
tuple: A list for model parameters: [Weight matrix, Preds, Accuracy, [Activations functions]]. You can acces this parameters in model_operations module. For example: model_operations.get_weights() for Weight matrix.
|
233
233
|
|
234
234
|
"""
|
235
|
-
print(Fore.WHITE + "\nRemember, optimization on large datasets can be very time-consuming and computationally expensive. Therefore, if you are working with such a dataset, our recommendation is to include activation function: ['circular'] in the 'except_this' parameter unless absolutely necessary, as they can significantly prolong the process. from: learner\n" + Fore.RESET)
|
235
|
+
print(Fore.WHITE + "\nRemember, optimization on large datasets can be very time-consuming and computationally expensive. Therefore, if you are working with such a dataset, our recommendation is to include activation function: ['circular', 'spiral'] in the 'except_this' parameter unless absolutely necessary, as they can significantly prolong the process. from: learner\n" + Fore.RESET)
|
236
236
|
|
237
237
|
activation_potentiation = all_activations()
|
238
238
|
|
@@ -297,9 +297,9 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat
|
|
297
297
|
|
298
298
|
# Initialize progress bar
|
299
299
|
if batch_size == 1:
|
300
|
-
ncols =
|
300
|
+
ncols = 85
|
301
301
|
else:
|
302
|
-
ncols =
|
302
|
+
ncols = 98
|
303
303
|
progress = initialize_loading_bar(total=len(activation_potentiation), desc="", ncols=ncols, bar_format=bar_format_learner)
|
304
304
|
|
305
305
|
# Initialize variables
|
pyerualjetwork/planeat.py
CHANGED
@@ -15,10 +15,10 @@ import random
|
|
15
15
|
from tqdm import tqdm
|
16
16
|
|
17
17
|
### LIBRARY IMPORTS ###
|
18
|
-
from plan import feed_forward
|
19
|
-
from data_operations import normalization
|
20
|
-
from ui import loading_bars
|
21
|
-
from activation_functions import apply_activation, all_activations
|
18
|
+
from .plan import feed_forward
|
19
|
+
from .data_operations import normalization
|
20
|
+
from .ui import loading_bars
|
21
|
+
from .activation_functions import apply_activation, all_activations
|
22
22
|
|
23
23
|
def define_genomes(input_shape, output_shape, population_size, dtype=np.float32):
|
24
24
|
"""
|
pyerualjetwork/planeat_cuda.py
CHANGED
@@ -16,10 +16,10 @@ import random
|
|
16
16
|
from tqdm import tqdm
|
17
17
|
|
18
18
|
### LIBRARY IMPORTS ###
|
19
|
-
from plan_cuda import feed_forward
|
20
|
-
from data_operations_cuda import normalization
|
21
|
-
from ui import loading_bars
|
22
|
-
from activation_functions_cuda import apply_activation, all_activations
|
19
|
+
from .plan_cuda import feed_forward
|
20
|
+
from .data_operations_cuda import normalization
|
21
|
+
from .ui import loading_bars
|
22
|
+
from .activation_functions_cuda import apply_activation, all_activations
|
23
23
|
|
24
24
|
def define_genomes(input_shape, output_shape, population_size, dtype=cp.float32):
|
25
25
|
"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyerualjetwork
|
3
|
-
Version: 4.
|
3
|
+
Version: 4.1.1
|
4
4
|
Summary: PyerualJetwork is a machine learning library written in Python for professionals, incorporating advanced, unique, new, and modern techniques.
|
5
5
|
Author: Hasan Can Beydili
|
6
6
|
Author-email: tchasancan@gmail.com
|
@@ -1,23 +1,23 @@
|
|
1
|
-
pyerualjetwork/__init__.py,sha256
|
1
|
+
pyerualjetwork/__init__.py,sha256=-sXxmc1Kgkyw7AHtIrteMR-wA4vafdHZ5Ds7TFRbt3c,2542
|
2
2
|
pyerualjetwork/activation_functions.py,sha256=UeuuagJWcSoFfmwikDU7O8ph--oySnWDJNqKbEh4SlE,12043
|
3
|
-
pyerualjetwork/activation_functions_cuda.py,sha256=
|
3
|
+
pyerualjetwork/activation_functions_cuda.py,sha256=6pdCthpiGmnMwRfuduGsvwN8cNv3UKNUPOjscxyAWqE,12075
|
4
4
|
pyerualjetwork/data_operations.py,sha256=rnOYLLK3YnRdWpEsEQABU0RE950lQQI7971eBLBpqOQ,16536
|
5
|
-
pyerualjetwork/data_operations_cuda.py,sha256=
|
5
|
+
pyerualjetwork/data_operations_cuda.py,sha256=FBcZloHAyzuJnF2L1yJY1PS-3VJ8zlq5pgfxr8z0oKc,18768
|
6
6
|
pyerualjetwork/help.py,sha256=pZs7hIhgFkovGLle97d9Qu9m5zKhMh7-OAIphIoSxBg,830
|
7
7
|
pyerualjetwork/loss_functions.py,sha256=6PyBI232SQRGuFnG3LDGvnv_PUdWzT2_2mUODJiejGI,618
|
8
8
|
pyerualjetwork/loss_functions_cuda.py,sha256=C93IZJcrOpT6HMK9x1O4AHJWXYTkN5WZiqdssPbvAPk,617
|
9
9
|
pyerualjetwork/metrics.py,sha256=q7MkhnZDRbCjFBDDfUgrl8lBYnUT_1ro1LxeBq105pI,6077
|
10
10
|
pyerualjetwork/metrics_cuda.py,sha256=TCwn5Z_4jQjqPCURX_xtcz9cjsYVzlahgKDA-qCgpU4,5072
|
11
11
|
pyerualjetwork/model_operations.py,sha256=k_53BJladPm9fBWdlVpS6Uf5IQzpNlJWLH746DXGq_M,13036
|
12
|
-
pyerualjetwork/model_operations_cuda.py,sha256
|
13
|
-
pyerualjetwork/plan.py,sha256
|
14
|
-
pyerualjetwork/plan_cuda.py,sha256=
|
15
|
-
pyerualjetwork/planeat.py,sha256=
|
16
|
-
pyerualjetwork/planeat_cuda.py,sha256=
|
12
|
+
pyerualjetwork/model_operations_cuda.py,sha256=-_klhwLo3z3bLIm5LXjgXGW657R203ty-Po-5wDuJBM,13244
|
13
|
+
pyerualjetwork/plan.py,sha256=-3v0PNNlxL1gx8CTMdvD7HgtJSZt8lEPh7hceIILdDk,34743
|
14
|
+
pyerualjetwork/plan_cuda.py,sha256=0Q7xF657xGd03W3Kjqev8Ig1IrolI_ZAlOJuuK0NugI,34562
|
15
|
+
pyerualjetwork/planeat.py,sha256=6uEcCF4bV1_W1aQUTKQjfnDgWp6rP2oluKFo5Y37k7o,39517
|
16
|
+
pyerualjetwork/planeat_cuda.py,sha256=GXYt_00rDKkDKJrhjE8hHOtu4U_pQZM1yZ6XrMpQo2c,39574
|
17
17
|
pyerualjetwork/ui.py,sha256=wu2BhU1k-w3Kcho5Jtq4SEKe68ftaUeRGneUOSCVDjU,575
|
18
18
|
pyerualjetwork/visualizations.py,sha256=DvbiQGlvlKNAgBJ3O3ukAi6uxSheha9SRFh5YX7ZxIA,26678
|
19
19
|
pyerualjetwork/visualizations_cuda.py,sha256=dA0u85ZIyKqjtoSJ6p3EbEpJs4V4vS5W5ftR6eif8yg,26713
|
20
|
-
pyerualjetwork-4.
|
21
|
-
pyerualjetwork-4.
|
22
|
-
pyerualjetwork-4.
|
23
|
-
pyerualjetwork-4.
|
20
|
+
pyerualjetwork-4.1.1.dist-info/METADATA,sha256=K05q0B1Ltsa7LpwTN0yJkFA3HBAimFvfX3vzLMRo0rA,6357
|
21
|
+
pyerualjetwork-4.1.1.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
22
|
+
pyerualjetwork-4.1.1.dist-info/top_level.txt,sha256=BRyt62U_r3ZmJpj-wXNOoA345Bzamrj6RbaWsyW4tRg,15
|
23
|
+
pyerualjetwork-4.1.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|