pyerualjetwork 4.1.0__py3-none-any.whl → 4.1.2__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- pyerualjetwork/__init__.py +1 -1
- pyerualjetwork/activation_functions.py +45 -48
- pyerualjetwork/activation_functions_cuda.py +47 -48
- pyerualjetwork/data_operations.py +2 -2
- pyerualjetwork/data_operations_cuda.py +86 -46
- pyerualjetwork/help.py +4 -4
- pyerualjetwork/metrics_cuda.py +1 -2
- pyerualjetwork/model_operations.py +1 -0
- pyerualjetwork/model_operations_cuda.py +4 -1
- pyerualjetwork/plan.py +2 -10
- pyerualjetwork/plan_cuda.py +5 -18
- pyerualjetwork/planeat.py +4 -4
- pyerualjetwork/planeat_cuda.py +4 -4
- pyerualjetwork/visualizations_cuda.py +5 -5
- {pyerualjetwork-4.1.0.dist-info → pyerualjetwork-4.1.2.dist-info}/METADATA +1 -1
- pyerualjetwork-4.1.2.dist-info/RECORD +23 -0
- pyerualjetwork-4.1.0.dist-info/RECORD +0 -23
- {pyerualjetwork-4.1.0.dist-info → pyerualjetwork-4.1.2.dist-info}/WHEEL +0 -0
- {pyerualjetwork-4.1.0.dist-info → pyerualjetwork-4.1.2.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.1.
|
50
|
+
__version__ = "4.1.2"
|
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__):
|
@@ -218,15 +218,12 @@ def scaled_cubic(x, alpha=1.0):
|
|
218
218
|
def sine_offset(x, beta=0.0):
|
219
219
|
return np.sin(x + beta)
|
220
220
|
|
221
|
-
|
222
|
-
|
223
|
-
def safe_aggregate(current_sum, new_value):
|
221
|
+
def safe_add(current_sum, new_value):
|
224
222
|
try:
|
225
223
|
return current_sum + new_value
|
226
224
|
except OverflowError:
|
227
225
|
return np.array(current_sum) + np.array(new_value)
|
228
226
|
|
229
|
-
|
230
227
|
def apply_activation(Input, activation_list):
|
231
228
|
"""
|
232
229
|
Applies a sequence of activation functions to the input.
|
@@ -244,93 +241,93 @@ def apply_activation(Input, activation_list):
|
|
244
241
|
for i in range(len(activation_list)):
|
245
242
|
try:
|
246
243
|
if activation_list[i] == 'sigmoid':
|
247
|
-
Input =
|
244
|
+
Input = safe_add(Input, Sigmoid(origin_input))
|
248
245
|
elif activation_list[i] == 'swish':
|
249
|
-
Input =
|
246
|
+
Input = safe_add(Input, swish(origin_input))
|
250
247
|
elif activation_list[i] == 'mod_circular':
|
251
|
-
Input =
|
248
|
+
Input = safe_add(Input, modular_circular_activation(origin_input))
|
252
249
|
elif activation_list[i] == 'tanh_circular':
|
253
|
-
Input =
|
250
|
+
Input = safe_add(Input, tanh_circular_activation(origin_input))
|
254
251
|
elif activation_list[i] == 'leaky_relu':
|
255
|
-
Input =
|
252
|
+
Input = safe_add(Input, leaky_relu(origin_input))
|
256
253
|
elif activation_list[i] == 'relu':
|
257
|
-
Input =
|
254
|
+
Input = safe_add(Input, Relu(origin_input))
|
258
255
|
elif activation_list[i] == 'softplus':
|
259
|
-
Input =
|
256
|
+
Input = safe_add(Input, softplus(origin_input))
|
260
257
|
elif activation_list[i] == 'elu':
|
261
|
-
Input =
|
258
|
+
Input = safe_add(Input, elu(origin_input))
|
262
259
|
elif activation_list[i] == 'gelu':
|
263
|
-
Input =
|
260
|
+
Input = safe_add(Input, gelu(origin_input))
|
264
261
|
elif activation_list[i] == 'selu':
|
265
|
-
Input =
|
262
|
+
Input = safe_add(Input, selu(origin_input))
|
266
263
|
elif activation_list[i] == 'tanh':
|
267
|
-
Input =
|
264
|
+
Input = safe_add(Input, tanh(origin_input))
|
268
265
|
elif activation_list[i] == 'sinakt':
|
269
|
-
Input =
|
266
|
+
Input = safe_add(Input, sinakt(origin_input))
|
270
267
|
elif activation_list[i] == 'p_squared':
|
271
|
-
Input =
|
268
|
+
Input = safe_add(Input, p_squared(origin_input))
|
272
269
|
elif activation_list[i] == 'sglu':
|
273
|
-
Input =
|
270
|
+
Input = safe_add(Input, sglu(origin_input, alpha=1.0))
|
274
271
|
elif activation_list[i] == 'dlrelu':
|
275
|
-
Input =
|
272
|
+
Input = safe_add(Input, dlrelu(origin_input))
|
276
273
|
elif activation_list[i] == 'exsig':
|
277
|
-
Input =
|
274
|
+
Input = safe_add(Input, exsig(origin_input))
|
278
275
|
elif activation_list[i] == 'sin_plus':
|
279
|
-
Input =
|
276
|
+
Input = safe_add(Input, sin_plus(origin_input))
|
280
277
|
elif activation_list[i] == 'acos':
|
281
|
-
Input =
|
278
|
+
Input = safe_add(Input, acos(origin_input, alpha=1.0, beta=0.0))
|
282
279
|
elif activation_list[i] == 'gla':
|
283
|
-
Input =
|
280
|
+
Input = safe_add(Input, gla(origin_input, alpha=1.0, mu=0.0))
|
284
281
|
elif activation_list[i] == 'srelu':
|
285
|
-
Input =
|
282
|
+
Input = safe_add(Input, srelu(origin_input))
|
286
283
|
elif activation_list[i] == 'qelu':
|
287
|
-
Input =
|
284
|
+
Input = safe_add(Input, qelu(origin_input))
|
288
285
|
elif activation_list[i] == 'isra':
|
289
|
-
Input =
|
286
|
+
Input = safe_add(Input, isra(origin_input))
|
290
287
|
elif activation_list[i] == 'waveakt':
|
291
|
-
Input =
|
288
|
+
Input = safe_add(Input, waveakt(origin_input))
|
292
289
|
elif activation_list[i] == 'arctan':
|
293
|
-
Input =
|
290
|
+
Input = safe_add(Input, arctan(origin_input))
|
294
291
|
elif activation_list[i] == 'bent_identity':
|
295
|
-
Input =
|
292
|
+
Input = safe_add(Input, bent_identity(origin_input))
|
296
293
|
elif activation_list[i] == 'sech':
|
297
|
-
Input =
|
294
|
+
Input = safe_add(Input, sech(origin_input))
|
298
295
|
elif activation_list[i] == 'softsign':
|
299
|
-
Input =
|
296
|
+
Input = safe_add(Input, softsign(origin_input))
|
300
297
|
elif activation_list[i] == 'pwl':
|
301
|
-
Input =
|
298
|
+
Input = safe_add(Input, pwl(origin_input))
|
302
299
|
elif activation_list[i] == 'cubic':
|
303
|
-
Input =
|
300
|
+
Input = safe_add(Input, cubic(origin_input))
|
304
301
|
elif activation_list[i] == 'gaussian':
|
305
|
-
Input =
|
302
|
+
Input = safe_add(Input, gaussian(origin_input))
|
306
303
|
elif activation_list[i] == 'sine':
|
307
|
-
Input =
|
304
|
+
Input = safe_add(Input, sine(origin_input))
|
308
305
|
elif activation_list[i] == 'tanh_square':
|
309
|
-
Input =
|
306
|
+
Input = safe_add(Input, tanh_square(origin_input))
|
310
307
|
elif activation_list[i] == 'mod_sigmoid':
|
311
|
-
Input =
|
308
|
+
Input = safe_add(Input, mod_sigmoid(origin_input))
|
312
309
|
elif activation_list[i] == 'linear':
|
313
|
-
Input =
|
310
|
+
Input = safe_add(Input, origin_input)
|
314
311
|
elif activation_list[i] == 'quartic':
|
315
|
-
Input =
|
312
|
+
Input = safe_add(Input, quartic(origin_input))
|
316
313
|
elif activation_list[i] == 'square_quartic':
|
317
|
-
Input =
|
314
|
+
Input = safe_add(Input, square_quartic(origin_input))
|
318
315
|
elif activation_list[i] == 'cubic_quadratic':
|
319
|
-
Input =
|
316
|
+
Input = safe_add(Input, cubic_quadratic(origin_input))
|
320
317
|
elif activation_list[i] == 'exp_cubic':
|
321
|
-
Input =
|
318
|
+
Input = safe_add(Input, exp_cubic(origin_input))
|
322
319
|
elif activation_list[i] == 'sine_square':
|
323
|
-
Input =
|
320
|
+
Input = safe_add(Input, sine_square(origin_input))
|
324
321
|
elif activation_list[i] == 'logarithmic':
|
325
|
-
Input =
|
322
|
+
Input = safe_add(Input, logarithmic(origin_input))
|
326
323
|
elif activation_list[i] == 'scaled_cubic':
|
327
|
-
Input =
|
324
|
+
Input = safe_add(Input, scaled_cubic(origin_input, 1.0))
|
328
325
|
elif activation_list[i] == 'sine_offset':
|
329
|
-
Input =
|
326
|
+
Input = safe_add(Input, sine_offset(origin_input, 1.0))
|
330
327
|
elif activation_list[i] == 'spiral':
|
331
|
-
Input =
|
328
|
+
Input = safe_add(Input, spiral_activation(origin_input))
|
332
329
|
elif activation_list[i] == 'circular':
|
333
|
-
Input =
|
330
|
+
Input = safe_add(Input, circular_activation(origin_input))
|
334
331
|
|
335
332
|
|
336
333
|
except Exception as e:
|
@@ -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
|
|
@@ -219,13 +219,12 @@ def sine_offset(x, beta=0.0):
|
|
219
219
|
|
220
220
|
|
221
221
|
|
222
|
-
def
|
222
|
+
def safe_add(current_sum, new_value):
|
223
223
|
try:
|
224
224
|
return current_sum + new_value
|
225
225
|
except OverflowError:
|
226
226
|
return cp.array(current_sum) + cp.array(new_value)
|
227
227
|
|
228
|
-
|
229
228
|
def apply_activation(Input, activation_list):
|
230
229
|
"""
|
231
230
|
Applies a sequence of activation functions to the input.
|
@@ -243,93 +242,93 @@ def apply_activation(Input, activation_list):
|
|
243
242
|
for i in range(len(activation_list)):
|
244
243
|
try:
|
245
244
|
if activation_list[i] == 'sigmoid':
|
246
|
-
Input =
|
245
|
+
Input = safe_add(Input, Sigmoid(origin_input))
|
247
246
|
elif activation_list[i] == 'swish':
|
248
|
-
Input =
|
247
|
+
Input = safe_add(Input, swish(origin_input))
|
249
248
|
elif activation_list[i] == 'mod_circular':
|
250
|
-
Input =
|
249
|
+
Input = safe_add(Input, modular_circular_activation(origin_input))
|
251
250
|
elif activation_list[i] == 'tanh_circular':
|
252
|
-
Input =
|
251
|
+
Input = safe_add(Input, tanh_circular_activation(origin_input))
|
253
252
|
elif activation_list[i] == 'leaky_relu':
|
254
|
-
Input =
|
253
|
+
Input = safe_add(Input, leaky_relu(origin_input))
|
255
254
|
elif activation_list[i] == 'relu':
|
256
|
-
Input =
|
255
|
+
Input = safe_add(Input, Relu(origin_input))
|
257
256
|
elif activation_list[i] == 'softplus':
|
258
|
-
Input =
|
257
|
+
Input = safe_add(Input, softplus(origin_input))
|
259
258
|
elif activation_list[i] == 'elu':
|
260
|
-
Input =
|
259
|
+
Input = safe_add(Input, elu(origin_input))
|
261
260
|
elif activation_list[i] == 'gelu':
|
262
|
-
Input =
|
261
|
+
Input = safe_add(Input, gelu(origin_input))
|
263
262
|
elif activation_list[i] == 'selu':
|
264
|
-
Input =
|
263
|
+
Input = safe_add(Input, selu(origin_input))
|
265
264
|
elif activation_list[i] == 'tanh':
|
266
|
-
Input =
|
265
|
+
Input = safe_add(Input, tanh(origin_input))
|
267
266
|
elif activation_list[i] == 'sinakt':
|
268
|
-
Input =
|
267
|
+
Input = safe_add(Input, sinakt(origin_input))
|
269
268
|
elif activation_list[i] == 'p_squared':
|
270
|
-
Input =
|
269
|
+
Input = safe_add(Input, p_squared(origin_input))
|
271
270
|
elif activation_list[i] == 'sglu':
|
272
|
-
Input =
|
271
|
+
Input = safe_add(Input, sglu(origin_input, alpha=1.0))
|
273
272
|
elif activation_list[i] == 'dlrelu':
|
274
|
-
Input =
|
273
|
+
Input = safe_add(Input, dlrelu(origin_input))
|
275
274
|
elif activation_list[i] == 'exsig':
|
276
|
-
Input =
|
275
|
+
Input = safe_add(Input, exsig(origin_input))
|
277
276
|
elif activation_list[i] == 'sin_plus':
|
278
|
-
Input =
|
277
|
+
Input = safe_add(Input, sin_plus(origin_input))
|
279
278
|
elif activation_list[i] == 'acos':
|
280
|
-
Input =
|
279
|
+
Input = safe_add(Input, acos(origin_input, alpha=1.0, beta=0.0))
|
281
280
|
elif activation_list[i] == 'gla':
|
282
|
-
Input =
|
281
|
+
Input = safe_add(Input, gla(origin_input, alpha=1.0, mu=0.0))
|
283
282
|
elif activation_list[i] == 'srelu':
|
284
|
-
Input =
|
283
|
+
Input = safe_add(Input, srelu(origin_input))
|
285
284
|
elif activation_list[i] == 'qelu':
|
286
|
-
Input =
|
285
|
+
Input = safe_add(Input, qelu(origin_input))
|
287
286
|
elif activation_list[i] == 'isra':
|
288
|
-
Input =
|
287
|
+
Input = safe_add(Input, isra(origin_input))
|
289
288
|
elif activation_list[i] == 'waveakt':
|
290
|
-
Input =
|
289
|
+
Input = safe_add(Input, waveakt(origin_input))
|
291
290
|
elif activation_list[i] == 'arctan':
|
292
|
-
Input =
|
291
|
+
Input = safe_add(Input, arctan(origin_input))
|
293
292
|
elif activation_list[i] == 'bent_identity':
|
294
|
-
Input =
|
293
|
+
Input = safe_add(Input, bent_identity(origin_input))
|
295
294
|
elif activation_list[i] == 'sech':
|
296
|
-
Input =
|
295
|
+
Input = safe_add(Input, sech(origin_input))
|
297
296
|
elif activation_list[i] == 'softsign':
|
298
|
-
Input =
|
297
|
+
Input = safe_add(Input, softsign(origin_input))
|
299
298
|
elif activation_list[i] == 'pwl':
|
300
|
-
Input =
|
299
|
+
Input = safe_add(Input, pwl(origin_input))
|
301
300
|
elif activation_list[i] == 'cubic':
|
302
|
-
Input =
|
301
|
+
Input = safe_add(Input, cubic(origin_input))
|
303
302
|
elif activation_list[i] == 'gaussian':
|
304
|
-
Input =
|
303
|
+
Input = safe_add(Input, gaussian(origin_input))
|
305
304
|
elif activation_list[i] == 'sine':
|
306
|
-
Input =
|
305
|
+
Input = safe_add(Input, sine(origin_input))
|
307
306
|
elif activation_list[i] == 'tanh_square':
|
308
|
-
Input =
|
307
|
+
Input = safe_add(Input, tanh_square(origin_input))
|
309
308
|
elif activation_list[i] == 'mod_sigmoid':
|
310
|
-
Input =
|
309
|
+
Input = safe_add(Input, mod_sigmoid(origin_input))
|
311
310
|
elif activation_list[i] == 'linear':
|
312
|
-
Input =
|
311
|
+
Input = safe_add(Input, origin_input)
|
313
312
|
elif activation_list[i] == 'quartic':
|
314
|
-
Input =
|
313
|
+
Input = safe_add(Input, quartic(origin_input))
|
315
314
|
elif activation_list[i] == 'square_quartic':
|
316
|
-
Input =
|
315
|
+
Input = safe_add(Input, square_quartic(origin_input))
|
317
316
|
elif activation_list[i] == 'cubic_quadratic':
|
318
|
-
Input =
|
317
|
+
Input = safe_add(Input, cubic_quadratic(origin_input))
|
319
318
|
elif activation_list[i] == 'exp_cubic':
|
320
|
-
Input =
|
319
|
+
Input = safe_add(Input, exp_cubic(origin_input))
|
321
320
|
elif activation_list[i] == 'sine_square':
|
322
|
-
Input =
|
321
|
+
Input = safe_add(Input, sine_square(origin_input))
|
323
322
|
elif activation_list[i] == 'logarithmic':
|
324
|
-
Input =
|
323
|
+
Input = safe_add(Input, logarithmic(origin_input))
|
325
324
|
elif activation_list[i] == 'scaled_cubic':
|
326
|
-
Input =
|
325
|
+
Input = safe_add(Input, scaled_cubic(origin_input, 1.0))
|
327
326
|
elif activation_list[i] == 'sine_offset':
|
328
|
-
Input =
|
327
|
+
Input = safe_add(Input, sine_offset(origin_input, 1.0))
|
329
328
|
elif activation_list[i] == 'spiral':
|
330
|
-
Input =
|
329
|
+
Input = safe_add(Input, spiral_activation(origin_input))
|
331
330
|
elif activation_list[i] == 'circular':
|
332
|
-
Input =
|
331
|
+
Input = safe_add(Input, circular_activation(origin_input))
|
333
332
|
|
334
333
|
except Exception as e:
|
335
334
|
warnings.warn(f"Error in activation {activation_list[i]}: {str(e)}", RuntimeWarning)
|
@@ -76,7 +76,7 @@ def decode_one_hot(encoded_data):
|
|
76
76
|
return decoded_labels
|
77
77
|
|
78
78
|
|
79
|
-
def split(X, y, test_size, random_state, dtype=np.float32):
|
79
|
+
def split(X, y, test_size, random_state=42, dtype=np.float32):
|
80
80
|
"""
|
81
81
|
Splits the given X (features) and y (labels) data into training and testing subsets.
|
82
82
|
|
@@ -84,7 +84,7 @@ def split(X, y, test_size, random_state, dtype=np.float32):
|
|
84
84
|
X (numpy.ndarray): Features data.
|
85
85
|
y (numpy.ndarray): Labels data.
|
86
86
|
test_size (float or int): Proportion or number of samples for the test subset.
|
87
|
-
random_state (int or None): Seed for random state.
|
87
|
+
random_state (int or None): Seed for random state. Default: 42.
|
88
88
|
dtype (numpy.dtype): Data type for the arrays. np.float32 by default. Example: np.float64 or np.float16. [fp32 for balanced devices, fp64 for strong devices, fp16 for weak devices: not reccomended!]
|
89
89
|
|
90
90
|
Returns:
|
@@ -81,7 +81,7 @@ 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
|
|
@@ -89,9 +89,9 @@ def split(X, y, test_size, random_state, dtype=cp.float32):
|
|
89
89
|
X (cupy.ndarray): Features data.
|
90
90
|
y (cupy.ndarray): Labels data.
|
91
91
|
test_size (float or int): Proportion or number of samples for the test subset.
|
92
|
-
random_state (int or None): Seed for random state.
|
92
|
+
random_state (int or None): Seed for random state. Default: 42.
|
93
93
|
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
|
-
|
94
|
+
use_cpu (bool): If True, output will be same cpu's split function. Default: False.
|
95
95
|
Returns:
|
96
96
|
tuple: x_train, x_test, y_train, y_test as ordered training and testing data subsets.
|
97
97
|
"""
|
@@ -118,11 +118,17 @@ def split(X, y, test_size, random_state, dtype=cp.float32):
|
|
118
118
|
else:
|
119
119
|
raise ValueError("test_size should be float or int.")
|
120
120
|
|
121
|
-
if
|
122
|
-
|
121
|
+
if use_cpu:
|
122
|
+
indices = np.arange(num_samples)
|
123
|
+
np.random.seed(random_state)
|
124
|
+
np.random.shuffle(indices)
|
125
|
+
indices = cp.array(indices)
|
126
|
+
else:
|
127
|
+
if random_state is not None:
|
128
|
+
cp.random.seed(random_state)
|
123
129
|
|
124
|
-
|
125
|
-
|
130
|
+
indices = cp.arange(num_samples)
|
131
|
+
cp.random.shuffle(indices)
|
126
132
|
|
127
133
|
test_indices = indices[:test_size]
|
128
134
|
train_indices = indices[test_size:]
|
@@ -133,16 +139,22 @@ def split(X, y, test_size, random_state, dtype=cp.float32):
|
|
133
139
|
return x_train, x_test, y_train, y_test
|
134
140
|
|
135
141
|
|
136
|
-
def manuel_balancer(x_train, y_train, target_samples_per_class, dtype=cp.float32):
|
142
|
+
def manuel_balancer(x_train, y_train, target_samples_per_class, dtype=cp.float32, use_cpu=False):
|
137
143
|
"""
|
138
144
|
Generates synthetic examples to balance classes to the specified number of examples per class.
|
139
145
|
|
140
146
|
Arguments:
|
147
|
+
|
141
148
|
x_train -- Input dataset (examples) - cupy array format
|
149
|
+
|
142
150
|
y_train -- Class labels (one-hot encoded) - cupy array format
|
151
|
+
|
143
152
|
target_samples_per_class -- Desired number of samples per class
|
153
|
+
|
144
154
|
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
155
|
|
156
|
+
use_cpu (bool): If True, output will be same cpu's manuel_balancer function. Default: False.
|
157
|
+
|
146
158
|
Returns:
|
147
159
|
x_balanced -- Balanced input dataset (cupy array format)
|
148
160
|
y_balanced -- Balanced class labels (one-hot encoded, cupy array format)
|
@@ -176,8 +188,13 @@ def manuel_balancer(x_train, y_train, target_samples_per_class, dtype=cp.float32
|
|
176
188
|
num_samples = len(class_indices)
|
177
189
|
|
178
190
|
if num_samples > target_samples_per_class:
|
179
|
-
|
180
|
-
|
191
|
+
|
192
|
+
if use_cpu:
|
193
|
+
selected_indices = np.random.choice(
|
194
|
+
class_indices, target_samples_per_class, replace=False)
|
195
|
+
else:
|
196
|
+
selected_indices = cp.random.choice(class_indices, target_samples_per_class, replace=False)
|
197
|
+
|
181
198
|
x_balanced.append(x_train[selected_indices])
|
182
199
|
y_balanced.append(y_train[selected_indices])
|
183
200
|
|
@@ -193,13 +210,19 @@ def manuel_balancer(x_train, y_train, target_samples_per_class, dtype=cp.float32
|
|
193
210
|
additional_labels = cp.zeros((samples_to_add, y_train.shape[1]))
|
194
211
|
|
195
212
|
for i in range(samples_to_add):
|
213
|
+
|
214
|
+
if use_cpu:
|
215
|
+
random_indices = np.random.choice(class_indices.get(), 2, replace=False)
|
216
|
+
else:
|
217
|
+
random_indices = cp.random.choice(class_indices, 2, replace=False)
|
196
218
|
|
197
|
-
random_indices = cp.random.choice(class_indices, 2, replace=False)
|
198
219
|
sample1 = x_train[random_indices[0]]
|
199
220
|
sample2 = x_train[random_indices[1]]
|
200
221
|
|
201
|
-
|
202
|
-
|
222
|
+
if use_cpu:
|
223
|
+
synthetic_sample = sample1 + (sample2 - sample1) * np.random.rand()
|
224
|
+
else:
|
225
|
+
synthetic_sample = sample1 + (sample2 - sample1) * cp.random.rand()
|
203
226
|
|
204
227
|
additional_samples[i] = synthetic_sample
|
205
228
|
additional_labels[i] = y_train[class_indices[0]]
|
@@ -214,7 +237,7 @@ def manuel_balancer(x_train, y_train, target_samples_per_class, dtype=cp.float32
|
|
214
237
|
return x_balanced, y_balanced
|
215
238
|
|
216
239
|
|
217
|
-
def auto_balancer(x_train, y_train, dtype=cp.float32):
|
240
|
+
def auto_balancer(x_train, y_train, dtype=cp.float32, use_cpu=False):
|
218
241
|
|
219
242
|
"""
|
220
243
|
Function to balance the training data across different classes.
|
@@ -226,6 +249,7 @@ def auto_balancer(x_train, y_train, dtype=cp.float32):
|
|
226
249
|
|
227
250
|
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
251
|
|
252
|
+
use_cpu (bool): If True, output will be same cpu's auto_balancer function. Default: False.
|
229
253
|
Returns:
|
230
254
|
tuple: A tuple containing balanced input data and labels.
|
231
255
|
"""
|
@@ -248,44 +272,50 @@ def auto_balancer(x_train, y_train, dtype=cp.float32):
|
|
248
272
|
classes = cp.arange(y_train.shape[1])
|
249
273
|
class_count = len(classes)
|
250
274
|
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
275
|
+
|
276
|
+
ClassIndices = {i: cp.where(cp.array(y_train)[:, i] == 1)[
|
277
|
+
0] for i in range(class_count)}
|
278
|
+
classes = [len(ClassIndices[i]) for i in range(class_count)]
|
279
|
+
|
280
|
+
if len(set(classes)) == 1:
|
281
|
+
print(Fore.WHITE + "INFO: Data have already balanced. from: auto_balancer" + Style.RESET_ALL)
|
282
|
+
return x_train, y_train
|
283
|
+
|
284
|
+
MinCount = min(classes)
|
285
|
+
|
286
|
+
BalancedIndices = []
|
287
|
+
for i in tqdm(range(class_count),leave=False, ascii="▱▰",
|
288
|
+
bar_format= bar_format, desc='Balancing Data',ncols=70):
|
289
|
+
if len(ClassIndices[i]) > MinCount:
|
290
|
+
if use_cpu:
|
291
|
+
SelectedIndices = np.random.choice(
|
292
|
+
ClassIndices[i].get(), MinCount, replace=False)
|
293
|
+
else:
|
266
294
|
SelectedIndices = cp.random.choice(
|
267
295
|
ClassIndices[i], MinCount, replace=False)
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
296
|
+
else:
|
297
|
+
SelectedIndices = ClassIndices[i]
|
298
|
+
BalancedIndices.extend(SelectedIndices)
|
299
|
+
|
300
|
+
BalancedInputs = [x_train[idx] for idx in BalancedIndices]
|
301
|
+
BalancedLabels = [y_train[idx] for idx in BalancedIndices]
|
274
302
|
|
303
|
+
if use_cpu:
|
304
|
+
permutation = np.random.permutation(len(BalancedInputs))
|
305
|
+
else:
|
275
306
|
permutation = cp.random.permutation(len(BalancedInputs))
|
276
|
-
BalancedInputs = cp.array(BalancedInputs)[permutation]
|
277
|
-
BalancedLabels = cp.array(BalancedLabels)[permutation]
|
278
307
|
|
279
|
-
|
280
|
-
|
281
|
-
except:
|
282
|
-
print(Fore.RED + "ERROR: Inputs and labels must be same length check parameters")
|
283
|
-
sys.exit()
|
308
|
+
BalancedInputs = cp.array(BalancedInputs)[permutation]
|
309
|
+
BalancedLabels = cp.array(BalancedLabels)[permutation]
|
284
310
|
|
311
|
+
print(Fore.GREEN + "Data Succesfully Balanced from: " + str(len(x_train)
|
312
|
+
) + " to: " + str(len(BalancedInputs)) + ". from: auto_balancer " + Style.RESET_ALL)
|
313
|
+
|
314
|
+
|
285
315
|
return BalancedInputs, BalancedLabels
|
286
316
|
|
287
317
|
|
288
|
-
def synthetic_augmentation(x_train, y_train, dtype=cp.float32):
|
318
|
+
def synthetic_augmentation(x_train, y_train, dtype=cp.float32, use_cpu=False):
|
289
319
|
"""
|
290
320
|
Generates synthetic examples to balance classes with fewer examples using CuPy.
|
291
321
|
Arguments:
|
@@ -296,6 +326,8 @@ def synthetic_augmentation(x_train, y_train, dtype=cp.float32):
|
|
296
326
|
|
297
327
|
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
328
|
|
329
|
+
use_cpu (bool): If True, output will be same cpu's synthetic_augmentation function. Default: False.
|
330
|
+
|
299
331
|
Returns:
|
300
332
|
x_train_balanced -- Balanced input dataset (cupy array format)
|
301
333
|
y_train_balanced -- Balanced class labels (one-hot encoded, cupy array format)
|
@@ -336,13 +368,21 @@ def synthetic_augmentation(x_train, y_train, dtype=cp.float32):
|
|
336
368
|
|
337
369
|
if num_samples < max_class_count:
|
338
370
|
while num_samples < max_class_count:
|
339
|
-
|
371
|
+
if use_cpu:
|
372
|
+
random_indices = np.random.choice(
|
373
|
+
class_indices, 2, replace=False)
|
374
|
+
else:
|
375
|
+
random_indices = cp.random.choice(
|
340
376
|
cp.array(class_indices), 2, replace=False)
|
341
377
|
sample1 = x[random_indices[0]]
|
342
378
|
sample2 = x[random_indices[1]]
|
343
379
|
|
344
|
-
|
345
|
-
|
380
|
+
if use_cpu:
|
381
|
+
synthetic_sample = sample1 + \
|
382
|
+
(sample2 - sample1) * np.random.rand()
|
383
|
+
else:
|
384
|
+
synthetic_sample = sample1 + \
|
385
|
+
(sample2 - sample1) * cp.random.rand()
|
346
386
|
|
347
387
|
x_balanced.append(synthetic_sample)
|
348
388
|
y_balanced.append(y[class_indices[0]])
|
pyerualjetwork/help.py
CHANGED
@@ -10,7 +10,7 @@ def activation_potentiation():
|
|
10
10
|
|
11
11
|
def docs_and_examples():
|
12
12
|
|
13
|
-
print('PLAN document: https://github.com/HCB06/
|
14
|
-
print('PLAN examples: https://github.com/HCB06/
|
15
|
-
print('PLANEAT examples: https://github.com/HCB06/
|
16
|
-
print('
|
13
|
+
print('PLAN document: https://github.com/HCB06/Anaplan/tree/main/Welcome_to_PLAN\n')
|
14
|
+
print('PLAN examples: https://github.com/HCB06/Anaplan/tree/main/Welcome_to_Anaplan/ExampleCodes\n')
|
15
|
+
print('PLANEAT examples: https://github.com/HCB06/Anaplan/tree/main/Welcome_to_Anaplan/ExampleCodes/PLANEAT\n')
|
16
|
+
print('Anaplan document and examples: https://github.com/HCB06/Anaplan/tree/main/Welcome_to_Anaplan')
|
pyerualjetwork/metrics_cuda.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import cupy as cp
|
2
|
-
from .data_operations_cuda import decode_one_hot
|
3
2
|
|
4
3
|
def metrics(y_ts, test_preds, average='weighted'):
|
4
|
+
from .data_operations import decode_one_hot
|
5
5
|
y_test_d = cp.array(decode_one_hot(y_ts))
|
6
6
|
y_pred = cp.array(test_preds)
|
7
7
|
|
@@ -50,7 +50,6 @@ def metrics(y_ts, test_preds, average='weighted'):
|
|
50
50
|
return precision_val.item(), recall_val.item(), f1_val.item()
|
51
51
|
|
52
52
|
|
53
|
-
|
54
53
|
def roc_curve(y_true, y_score):
|
55
54
|
"""
|
56
55
|
Compute Receiver Operating Characteristic (ROC) curve.
|
@@ -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':
|
@@ -91,6 +91,9 @@ def save_model(model_name,
|
|
91
91
|
|
92
92
|
scaler_params.append(' ')
|
93
93
|
|
94
|
+
scaler_params[0] = scaler_params[0].get()
|
95
|
+
scaler_params[1] = scaler_params[1].get()
|
96
|
+
|
94
97
|
data = {'MODEL NAME': model_name,
|
95
98
|
'MODEL TYPE': model_type,
|
96
99
|
'CLASS COUNT': class_count,
|
pyerualjetwork/plan.py
CHANGED
@@ -125,15 +125,7 @@ def fit(
|
|
125
125
|
|
126
126
|
elif val and (x_val is not None and y_val is not None):
|
127
127
|
x_val = x_val.astype(dtype, copy=False)
|
128
|
-
|
129
|
-
if y_val.dtype != np.uint8:
|
130
|
-
y_val = np.array(y_val, copy=False).astype(np.uint8, copy=False)
|
131
|
-
elif len(y_val[0]) <= 32767:
|
132
|
-
if y_val.dtype != np.uint16:
|
133
|
-
y_val = np.array(y_val, copy=False).astype(np.uint16, copy=False)
|
134
|
-
else:
|
135
|
-
if y_val.dtype != np.uint32:
|
136
|
-
y_val = np.array(y_val, copy=False).astype(np.uint32, copy=False)
|
128
|
+
y_val = y_val.astype(dtype, copy=False)
|
137
129
|
|
138
130
|
val_list = [] if val else None
|
139
131
|
val_count = val_count or 10
|
@@ -231,7 +223,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat
|
|
231
223
|
tuple: A list for model parameters: [Weight matrix, Test loss, Test Accuracy, [Activations functions]].
|
232
224
|
|
233
225
|
"""
|
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'
|
226
|
+
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
227
|
|
236
228
|
activation_potentiation = all_activations()
|
237
229
|
|
pyerualjetwork/plan_cuda.py
CHANGED
@@ -120,22 +120,9 @@ def fit(
|
|
120
120
|
if len(x_train) != len(y_train):
|
121
121
|
raise ValueError("x_train and y_train must have the same length.")
|
122
122
|
|
123
|
-
if val and (x_val is None
|
123
|
+
if val and (x_val is None or y_val is None):
|
124
124
|
x_val, y_val = x_train, y_train
|
125
125
|
|
126
|
-
elif val and (x_val is not None and y_val is not None):
|
127
|
-
x_val = cp.array(x_val, copy=False).astype(dtype, copy=False)
|
128
|
-
|
129
|
-
if len(y_val[0]) < 256:
|
130
|
-
if y_val.dtype != cp.uint8:
|
131
|
-
y_val = cp.array(y_val, copy=False).astype(cp.uint8, copy=False)
|
132
|
-
elif len(y_val[0]) <= 32767:
|
133
|
-
if y_val.dtype != cp.uint16:
|
134
|
-
y_val = cp.array(y_val, copy=False).astype(cp.uint16, copy=False)
|
135
|
-
else:
|
136
|
-
if y_val.dtype != cp.uint32:
|
137
|
-
y_val = cp.array(y_val, copy=False).astype(cp.uint32, copy=False)
|
138
|
-
|
139
126
|
val_list = [] if val else None
|
140
127
|
val_count = val_count or 10
|
141
128
|
# Defining weights
|
@@ -146,7 +133,7 @@ def fit(
|
|
146
133
|
|
147
134
|
# Training process
|
148
135
|
for index, inp in enumerate(x_train):
|
149
|
-
inp = cp.array(inp).ravel()
|
136
|
+
inp = cp.array(inp, copy=False).ravel()
|
150
137
|
y_decoded = decode_one_hot(y_train)
|
151
138
|
# Weight updates
|
152
139
|
STPW = feed_forward(inp, STPW, is_training=True, Class=y_decoded[index], activation_potentiation=activation_potentiation, LTD=LTD)
|
@@ -232,7 +219,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat
|
|
232
219
|
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
220
|
|
234
221
|
"""
|
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'
|
222
|
+
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)
|
236
223
|
|
237
224
|
activation_potentiation = all_activations()
|
238
225
|
|
@@ -297,9 +284,9 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat
|
|
297
284
|
|
298
285
|
# Initialize progress bar
|
299
286
|
if batch_size == 1:
|
300
|
-
ncols =
|
287
|
+
ncols = 100
|
301
288
|
else:
|
302
|
-
ncols =
|
289
|
+
ncols = 140
|
303
290
|
progress = initialize_loading_bar(total=len(activation_potentiation), desc="", ncols=ncols, bar_format=bar_format_learner)
|
304
291
|
|
305
292
|
# 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
|
"""
|
@@ -525,8 +525,8 @@ def plot_decision_boundary(x, y, activation_potentiation, W, artist=None, ax=Non
|
|
525
525
|
|
526
526
|
def plot_decision_space(x, y, y_preds=None, s=100, color='tab20'):
|
527
527
|
|
528
|
-
from
|
529
|
-
from
|
528
|
+
from .metrics_cuda import pca
|
529
|
+
from .data_operations_cuda import decode_one_hot
|
530
530
|
|
531
531
|
if x.shape[1] > 2:
|
532
532
|
|
@@ -587,7 +587,7 @@ def neuron_history(LTPW, ax1, row, col, class_count, artist5, data, fig1, acc=Fa
|
|
587
587
|
|
588
588
|
title_info = f'{j+1}. Neuron'
|
589
589
|
|
590
|
-
art5 = ax1[j].imshow(mat, interpolation='sinc', cmap='viridis')
|
590
|
+
art5 = ax1[j].imshow(mat.get(), interpolation='sinc', cmap='viridis')
|
591
591
|
|
592
592
|
ax1[j].set_aspect('equal')
|
593
593
|
ax1[j].set_xticks([])
|
@@ -604,7 +604,7 @@ def neuron_history(LTPW, ax1, row, col, class_count, artist5, data, fig1, acc=Fa
|
|
604
604
|
|
605
605
|
def initialize_visualization_for_fit(val, show_training, neurons_history, x_train, y_train):
|
606
606
|
"""Initializes the visualization setup based on the parameters."""
|
607
|
-
from data_operations import find_closest_factors
|
607
|
+
from .data_operations import find_closest_factors
|
608
608
|
visualization_objects = {}
|
609
609
|
|
610
610
|
if show_training:
|
@@ -680,7 +680,7 @@ def display_visualization_for_fit(fig, artist_list, interval):
|
|
680
680
|
|
681
681
|
def initialize_visualization_for_learner(show_history, neurons_history, neural_web_history, x_train, y_train):
|
682
682
|
"""Initialize all visualization components"""
|
683
|
-
from data_operations import find_closest_factors
|
683
|
+
from .data_operations import find_closest_factors
|
684
684
|
viz_objects = {}
|
685
685
|
|
686
686
|
if show_history:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyerualjetwork
|
3
|
-
Version: 4.1.
|
3
|
+
Version: 4.1.2
|
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
|
@@ -0,0 +1,23 @@
|
|
1
|
+
pyerualjetwork/__init__.py,sha256=5oH9sQ9xOXUWYxBJt2h4ErHKFw63vREeOnKTdhSQGhk,2542
|
2
|
+
pyerualjetwork/activation_functions.py,sha256=WWOdMd5pI6ZKe-ieKCIsKAYPQODHuXYxx7tzhA5xjes,11767
|
3
|
+
pyerualjetwork/activation_functions_cuda.py,sha256=7U69VfwAIE8STUng2zEwPPQES9NgnkAXsDtVh-EzaZE,11803
|
4
|
+
pyerualjetwork/data_operations.py,sha256=2julEScuHsL_ueeJ-JE3hiqw3wibZQW_L2bwwdoXTN0,16552
|
5
|
+
pyerualjetwork/data_operations_cuda.py,sha256=uVGcLwhhePkZt2BnO9KrsIMq29CW5L_9ucyxN8Wnevw,18711
|
6
|
+
pyerualjetwork/help.py,sha256=OZghUy7GZTgEX_i3NYtgcpzUgCDOi6r2vVUF1ROkFiI,774
|
7
|
+
pyerualjetwork/loss_functions.py,sha256=6PyBI232SQRGuFnG3LDGvnv_PUdWzT2_2mUODJiejGI,618
|
8
|
+
pyerualjetwork/loss_functions_cuda.py,sha256=C93IZJcrOpT6HMK9x1O4AHJWXYTkN5WZiqdssPbvAPk,617
|
9
|
+
pyerualjetwork/metrics.py,sha256=q7MkhnZDRbCjFBDDfUgrl8lBYnUT_1ro1LxeBq105pI,6077
|
10
|
+
pyerualjetwork/metrics_cuda.py,sha256=Hz4PCeE5GcVUllZdsgXXdIw-UNqUVpqNxMIlPBNTSKY,5069
|
11
|
+
pyerualjetwork/model_operations.py,sha256=eWYiYlXYZzsRgVfF-4CFvjCHaZOGB2378evre8yCzYk,13084
|
12
|
+
pyerualjetwork/model_operations_cuda.py,sha256=Hryk2Qi6BwHY9K9G_muDxHW9ILK8dIW6lmwZfioKqYM,13246
|
13
|
+
pyerualjetwork/plan.py,sha256=1PDMyBnCsQgyks4esnPobcUNBHbex54JG2oFEV_Q_9g,34336
|
14
|
+
pyerualjetwork/plan_cuda.py,sha256=bpI4HVMexL5WiGU30Nj1mzp8f9sOyxuDw7Ka7LqQR7g,33958
|
15
|
+
pyerualjetwork/planeat.py,sha256=6uEcCF4bV1_W1aQUTKQjfnDgWp6rP2oluKFo5Y37k7o,39517
|
16
|
+
pyerualjetwork/planeat_cuda.py,sha256=GXYt_00rDKkDKJrhjE8hHOtu4U_pQZM1yZ6XrMpQo2c,39574
|
17
|
+
pyerualjetwork/ui.py,sha256=wu2BhU1k-w3Kcho5Jtq4SEKe68ftaUeRGneUOSCVDjU,575
|
18
|
+
pyerualjetwork/visualizations.py,sha256=DvbiQGlvlKNAgBJ3O3ukAi6uxSheha9SRFh5YX7ZxIA,26678
|
19
|
+
pyerualjetwork/visualizations_cuda.py,sha256=hH2FMjbsImAxTLIAUS2pfGSufigV-SbgpVMVrj4lYOE,26733
|
20
|
+
pyerualjetwork-4.1.2.dist-info/METADATA,sha256=vSlo45lfiRI3HHq3z4aUrX1LZXG83t14nLM-w8jqbSU,6357
|
21
|
+
pyerualjetwork-4.1.2.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
22
|
+
pyerualjetwork-4.1.2.dist-info/top_level.txt,sha256=BRyt62U_r3ZmJpj-wXNOoA345Bzamrj6RbaWsyW4tRg,15
|
23
|
+
pyerualjetwork-4.1.2.dist-info/RECORD,,
|
@@ -1,23 +0,0 @@
|
|
1
|
-
pyerualjetwork/__init__.py,sha256=buQzAGP2zwBt10ji65TzcupjWYX70rSdlkPzRhmnlDk,2542
|
2
|
-
pyerualjetwork/activation_functions.py,sha256=UeuuagJWcSoFfmwikDU7O8ph--oySnWDJNqKbEh4SlE,12043
|
3
|
-
pyerualjetwork/activation_functions_cuda.py,sha256=5F49gKkiRngo0hAaS1KfarxQ7wEyub13WAX_apxf8j8,12069
|
4
|
-
pyerualjetwork/data_operations.py,sha256=rnOYLLK3YnRdWpEsEQABU0RE950lQQI7971eBLBpqOQ,16536
|
5
|
-
pyerualjetwork/data_operations_cuda.py,sha256=8jooTsRCC-pEYvtw8c6CsfUUnztDy8DI8-yLf9aX27A,17108
|
6
|
-
pyerualjetwork/help.py,sha256=pZs7hIhgFkovGLle97d9Qu9m5zKhMh7-OAIphIoSxBg,830
|
7
|
-
pyerualjetwork/loss_functions.py,sha256=6PyBI232SQRGuFnG3LDGvnv_PUdWzT2_2mUODJiejGI,618
|
8
|
-
pyerualjetwork/loss_functions_cuda.py,sha256=C93IZJcrOpT6HMK9x1O4AHJWXYTkN5WZiqdssPbvAPk,617
|
9
|
-
pyerualjetwork/metrics.py,sha256=q7MkhnZDRbCjFBDDfUgrl8lBYnUT_1ro1LxeBq105pI,6077
|
10
|
-
pyerualjetwork/metrics_cuda.py,sha256=TCwn5Z_4jQjqPCURX_xtcz9cjsYVzlahgKDA-qCgpU4,5072
|
11
|
-
pyerualjetwork/model_operations.py,sha256=k_53BJladPm9fBWdlVpS6Uf5IQzpNlJWLH746DXGq_M,13036
|
12
|
-
pyerualjetwork/model_operations_cuda.py,sha256=Guo0lFaaLiAXwKmnOi8Fz_bL_p38qR46CIhGOg_V1Sw,13138
|
13
|
-
pyerualjetwork/plan.py,sha256=eHMYN-uzpzdwFnSsSuREOkG4vJdvoHZnRzJUQlcpBrc,34756
|
14
|
-
pyerualjetwork/plan_cuda.py,sha256=y2TWyUUeyT7r04qxcRbCc42XfakPlMNG1BHSPK0afP4,34551
|
15
|
-
pyerualjetwork/planeat.py,sha256=8cwWboJtXgFTKq6nFl1T9McbLDmBquKUr12y168PmcM,39513
|
16
|
-
pyerualjetwork/planeat_cuda.py,sha256=boN-HFwm_D9cT1z0eAR8zgkiD_XOg-J2T2jNFvZweG4,39570
|
17
|
-
pyerualjetwork/ui.py,sha256=wu2BhU1k-w3Kcho5Jtq4SEKe68ftaUeRGneUOSCVDjU,575
|
18
|
-
pyerualjetwork/visualizations.py,sha256=DvbiQGlvlKNAgBJ3O3ukAi6uxSheha9SRFh5YX7ZxIA,26678
|
19
|
-
pyerualjetwork/visualizations_cuda.py,sha256=dA0u85ZIyKqjtoSJ6p3EbEpJs4V4vS5W5ftR6eif8yg,26713
|
20
|
-
pyerualjetwork-4.1.0.dist-info/METADATA,sha256=StjT-bsNr5C_PsyNauqHbCF4ZaL0JLNGbERMnmGF4lQ,6357
|
21
|
-
pyerualjetwork-4.1.0.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
22
|
-
pyerualjetwork-4.1.0.dist-info/top_level.txt,sha256=BRyt62U_r3ZmJpj-wXNOoA345Bzamrj6RbaWsyW4tRg,15
|
23
|
-
pyerualjetwork-4.1.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|