pyerualjetwork 4.2.0b2__py3-none-any.whl → 4.2.0b4__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/planeat.py +76 -47
- pyerualjetwork/planeat_cuda.py +51 -41
- {pyerualjetwork-4.2.0b2.dist-info → pyerualjetwork-4.2.0b4.dist-info}/METADATA +1 -1
- {pyerualjetwork-4.2.0b2.dist-info → pyerualjetwork-4.2.0b4.dist-info}/RECORD +7 -7
- {pyerualjetwork-4.2.0b2.dist-info → pyerualjetwork-4.2.0b4.dist-info}/WHEEL +0 -0
- {pyerualjetwork-4.2.0b2.dist-info → pyerualjetwork-4.2.0b4.dist-info}/top_level.txt +0 -0
pyerualjetwork/__init__.py
CHANGED
@@ -48,7 +48,7 @@ for package_name in package_names:
|
|
48
48
|
|
49
49
|
print(f"PyerualJetwork is ready to use with {err} errors")
|
50
50
|
|
51
|
-
__version__ = "4.2.
|
51
|
+
__version__ = "4.2.0b4"
|
52
52
|
__update__ = "* Changes: https://github.com/HCB06/PyerualJetwork/blob/main/CHANGES\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"
|
53
53
|
|
54
54
|
def print_version(__version__):
|
pyerualjetwork/planeat.py
CHANGED
@@ -290,7 +290,7 @@ def evolver(weights,
|
|
290
290
|
|
291
291
|
good_weights = weights[slice_center:]
|
292
292
|
bad_weights = weights[:slice_center]
|
293
|
-
|
293
|
+
best_weight = good_weights[-1]
|
294
294
|
|
295
295
|
good_activations = list(activation_potentiations[slice_center:])
|
296
296
|
bad_activations = list(activation_potentiations[:slice_center])
|
@@ -305,46 +305,47 @@ def evolver(weights,
|
|
305
305
|
normalized_fitness = abs(normalization(fitness, dtype=dtype))
|
306
306
|
|
307
307
|
best_fitness = normalized_fitness[-1]
|
308
|
+
epsilon = np.finfo(float).eps
|
308
309
|
|
309
|
-
|
310
|
-
|
310
|
+
child_W = np.empty(bad_weights[0].shape, dtype=dtype)
|
311
|
+
child_act = bad_activations.copy()
|
311
312
|
|
313
|
+
for i in range(len(bad_weights)):
|
314
|
+
|
312
315
|
if policy == 'aggresive':
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
second_parent_act,
|
317
|
-
cross_over_mode=cross_over_mode,
|
318
|
-
activation_selection_add_prob=activation_selection_add_prob,
|
319
|
-
activation_selection_change_prob=activation_selection_change_prob,
|
320
|
-
activation_selection_rate=activation_selection_rate,
|
321
|
-
bad_genomes_selection_prob=bad_genomes_selection_prob,
|
322
|
-
first_parent_fitness=best_fitness,
|
323
|
-
fitness_bias=fitness_bias,
|
324
|
-
second_parent_fitness=normalized_fitness[s_i]
|
325
|
-
)
|
316
|
+
first_parent_W = best_weight
|
317
|
+
first_parent_act = best_activations
|
318
|
+
|
326
319
|
elif policy == 'explorer':
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
second_parent_act,
|
331
|
-
cross_over_mode=cross_over_mode,
|
332
|
-
activation_selection_add_prob=activation_selection_add_prob,
|
333
|
-
activation_selection_change_prob=activation_selection_change_prob,
|
334
|
-
activation_selection_rate=activation_selection_rate,
|
335
|
-
bad_genomes_selection_prob=bad_genomes_selection_prob,
|
336
|
-
first_parent_fitness=normalized_fitness[i],
|
337
|
-
fitness_bias=fitness_bias,
|
338
|
-
second_parent_fitness=normalized_fitness[s_i]
|
339
|
-
)
|
340
|
-
|
320
|
+
first_parent_W = good_weights[i]
|
321
|
+
first_parent_act = good_activations[i]
|
322
|
+
|
341
323
|
else: raise ValueError("policy parameter must be: 'aggresive' or 'explorer'")
|
324
|
+
|
325
|
+
second_parent_W, second_parent_act, s_i = second_parent_selection(good_weights, bad_weights, good_activations, bad_activations, bad_genomes_selection_prob)
|
326
|
+
|
327
|
+
child_W[i], child_act[i] = cross_over(first_parent_W,
|
328
|
+
second_parent_W,
|
329
|
+
first_parent_act,
|
330
|
+
second_parent_act,
|
331
|
+
cross_over_mode=cross_over_mode,
|
332
|
+
activation_selection_add_prob=activation_selection_add_prob,
|
333
|
+
activation_selection_change_prob=activation_selection_change_prob,
|
334
|
+
activation_selection_rate=activation_selection_rate,
|
335
|
+
bad_genomes_selection_prob=bad_genomes_selection_prob,
|
336
|
+
first_parent_fitness=best_fitness,
|
337
|
+
fitness_bias=fitness_bias,
|
338
|
+
second_parent_fitness=normalized_fitness[s_i],
|
339
|
+
epsilon=epsilon
|
340
|
+
)
|
341
|
+
|
342
342
|
|
343
343
|
if mutations is True:
|
344
344
|
mutation_prob = random.uniform(0, 1)
|
345
345
|
|
346
346
|
if mutation_prob > bad_genomes_mutation_prob:
|
347
|
-
if (save_best_genom == True and not np.array_equal(good_weights[i],
|
347
|
+
if (save_best_genom == True and not np.array_equal(good_weights[i], best_weight)) or save_best_genom == False:
|
348
|
+
|
348
349
|
good_weights[i], good_activations[i] = mutation(good_weights[i],
|
349
350
|
good_activations[i],
|
350
351
|
activation_mutate_prob=activation_mutate_prob,
|
@@ -353,7 +354,8 @@ def evolver(weights,
|
|
353
354
|
activation_change_prob=activation_mutate_change_prob,
|
354
355
|
weight_mutate_prob=weight_mutate_prob,
|
355
356
|
threshold=weight_mutate_rate,
|
356
|
-
genome_fitness=normalized_fitness[i]
|
357
|
+
genome_fitness=normalized_fitness[i],
|
358
|
+
epsilon=epsilon
|
357
359
|
)
|
358
360
|
|
359
361
|
elif mutation_prob < bad_genomes_mutation_prob:
|
@@ -365,13 +367,14 @@ def evolver(weights,
|
|
365
367
|
activation_change_prob=activation_mutate_change_prob,
|
366
368
|
weight_mutate_prob=weight_mutate_prob,
|
367
369
|
threshold=weight_mutate_rate,
|
368
|
-
genome_fitness=normalized_fitness[i]
|
370
|
+
genome_fitness=normalized_fitness[i],
|
371
|
+
epsilon=epsilon
|
369
372
|
)
|
370
373
|
|
371
374
|
if bar_status: progress.update(1)
|
372
375
|
|
373
|
-
weights = np.vstack((
|
374
|
-
activation_potentiations =
|
376
|
+
weights = np.vstack((child_W, good_weights))
|
377
|
+
activation_potentiations = child_act + good_activations
|
375
378
|
|
376
379
|
### INFO PRINTING CONSOLE
|
377
380
|
|
@@ -491,7 +494,8 @@ def cross_over(first_parent_W,
|
|
491
494
|
bad_genomes_selection_prob,
|
492
495
|
first_parent_fitness,
|
493
496
|
second_parent_fitness,
|
494
|
-
fitness_bias
|
497
|
+
fitness_bias,
|
498
|
+
epsilon):
|
495
499
|
"""
|
496
500
|
Performs a crossover operation on two sets of weights and activation functions.
|
497
501
|
This function combines two individuals (represented by their weights and activation functions)
|
@@ -499,22 +503,35 @@ def cross_over(first_parent_W,
|
|
499
503
|
|
500
504
|
Args:
|
501
505
|
first_parent_W (numpy.ndarray): The weight matrix of the first individual (parent).
|
506
|
+
|
502
507
|
second_parent_W (numpy.ndarray): The weight matrix of the second individual (parent).
|
508
|
+
|
503
509
|
first_parent_act (str or list): The activation function(s) of the first individual.
|
510
|
+
|
504
511
|
second_parent_act (str or list): The activation function(s) of the second individual.
|
512
|
+
|
505
513
|
cross_over_mode (str): Determines the crossover method to be used. Options:
|
506
514
|
- 'tpm': Two-Point Matrix Crossover, where sub-matrices of weights are swapped between parents.
|
515
|
+
|
507
516
|
activation_selection_add_prob (float): Probability of adding new activation functions
|
508
517
|
from the second parent to the child genome.
|
518
|
+
|
509
519
|
activation_selection_change_prob (float): Probability of replacing an activation function in the child genome
|
510
520
|
with one from the second parent.
|
521
|
+
|
511
522
|
activation_selection_rate (float): Determines how quickly activation functions are added or replaced
|
512
523
|
during the crossover process.
|
524
|
+
|
513
525
|
bad_genomes_selection_prob (float): Probability of selecting a "bad" genome for replacement with the offspring.
|
526
|
+
|
514
527
|
first_parent_fitness (float): Fitness score of the first parent.
|
528
|
+
|
515
529
|
second_parent_fitness (float): Fitness score of the second parent.
|
530
|
+
|
516
531
|
fitness_bias (float): A bias factor used to favor fitter parents during crossover operations.
|
517
532
|
|
533
|
+
epsilon (float): Small epsilon constant
|
534
|
+
|
518
535
|
Returns:
|
519
536
|
tuple: A tuple containing:
|
520
537
|
- child_W (numpy.ndarray): The weight matrix of the new individual created by crossover.
|
@@ -539,7 +556,8 @@ def cross_over(first_parent_W,
|
|
539
556
|
bad_genomes_selection_prob=0.7,
|
540
557
|
first_parent_fitness=0.9,
|
541
558
|
second_parent_fitness=0.85,
|
542
|
-
fitness_bias=0.6
|
559
|
+
fitness_bias=0.6,
|
560
|
+
epsilon=np.finfo.eps
|
543
561
|
)
|
544
562
|
```
|
545
563
|
"""
|
@@ -562,7 +580,7 @@ def cross_over(first_parent_W,
|
|
562
580
|
|
563
581
|
undominant_parent_W = np.copy(second_parent_W)
|
564
582
|
undominant_parent_act = second_parent_act
|
565
|
-
succes = second_parent_fitness
|
583
|
+
succes = second_parent_fitness + epsilon
|
566
584
|
|
567
585
|
elif decision == 'second_parent':
|
568
586
|
dominant_parent_W = np.copy(second_parent_W)
|
@@ -570,7 +588,7 @@ def cross_over(first_parent_W,
|
|
570
588
|
|
571
589
|
undominant_parent_W = np.copy(first_parent_W)
|
572
590
|
undominant_parent_act = first_parent_act
|
573
|
-
succes = first_parent_fitness
|
591
|
+
succes = first_parent_fitness + epsilon
|
574
592
|
|
575
593
|
while True:
|
576
594
|
|
@@ -588,18 +606,17 @@ def cross_over(first_parent_W,
|
|
588
606
|
selection_bias = random.uniform(0, 1)
|
589
607
|
|
590
608
|
if fitness_bias > selection_bias:
|
591
|
-
row_cut_start = math.floor(row_cut_start * succes)
|
592
|
-
row_cut_end = math.ceil(row_cut_end * succes)
|
609
|
+
row_cut_start = math.floor(row_cut_start * (succes + epsilon))
|
610
|
+
row_cut_end = math.ceil(row_cut_end * (succes + epsilon))
|
593
611
|
|
594
|
-
col_cut_start = math.floor(col_cut_start * succes)
|
595
|
-
col_cut_end = math.ceil(col_cut_end * succes)
|
612
|
+
col_cut_start = math.floor(col_cut_start * (succes + epsilon))
|
613
|
+
col_cut_end = math.ceil(col_cut_end * (succes + epsilon))
|
596
614
|
|
597
615
|
child_W = dominant_parent_W
|
598
616
|
|
599
617
|
if cross_over_mode == 'tpm':
|
600
618
|
child_W[row_cut_start:row_cut_end, col_cut_start:col_cut_end] = undominant_parent_W[row_cut_start:row_cut_end, col_cut_start:col_cut_end]
|
601
619
|
|
602
|
-
|
603
620
|
if isinstance(dominant_parent_act, str): dominant_parent_act = [dominant_parent_act]
|
604
621
|
if isinstance(undominant_parent_act, str): undominant_parent_act = [undominant_parent_act]
|
605
622
|
|
@@ -660,7 +677,8 @@ def mutation(weight,
|
|
660
677
|
activation_change_prob,
|
661
678
|
weight_mutate_prob,
|
662
679
|
threshold,
|
663
|
-
genome_fitness
|
680
|
+
genome_fitness,
|
681
|
+
epsilon):
|
664
682
|
"""
|
665
683
|
Performs mutation on the given weight matrix and activation functions.
|
666
684
|
- The weight matrix is mutated by randomly changing its values based on the mutation probability.
|
@@ -668,14 +686,25 @@ def mutation(weight,
|
|
668
686
|
|
669
687
|
Args:
|
670
688
|
weight (numpy.ndarray): The weight matrix to mutate.
|
689
|
+
|
671
690
|
activations (list): The list of activation functions to mutate.
|
691
|
+
|
672
692
|
activation_mutate_prob (float): The overall probability of mutating activation functions.
|
693
|
+
|
673
694
|
activation_add_prob (float): Probability of adding a new activation function.
|
695
|
+
|
674
696
|
activation_delete_prob (float): Probability of removing an existing activation function.
|
697
|
+
|
675
698
|
activation_change_prob (float): Probability of replacing an existing activation function with a new one.
|
699
|
+
|
676
700
|
weight_mutate_prob (float): The probability of mutating weight matrix.
|
701
|
+
|
677
702
|
threshold (float): If the value you enter here is equal to the result of input layer * output layer, only a single weight will be mutated during each mutation process. If the value you enter here is half of the result of input layer * output layer, two weights in the weight matrix will be mutated.
|
703
|
+
|
678
704
|
genome_fitness (float): Fitness value of genome
|
705
|
+
|
706
|
+
epsilon (float): Small epsilon constant
|
707
|
+
|
679
708
|
Returns:
|
680
709
|
tuple: A tuple containing:
|
681
710
|
- mutated_weight (numpy.ndarray): The weight matrix after mutation.
|
@@ -703,8 +732,8 @@ def mutation(weight,
|
|
703
732
|
start = 0
|
704
733
|
row_end = weight.shape[0]
|
705
734
|
col_end = weight.shape[1]
|
706
|
-
|
707
|
-
threshold = threshold * genome_fitness
|
735
|
+
|
736
|
+
threshold = threshold * (genome_fitness + epsilon)
|
708
737
|
new_threshold = threshold
|
709
738
|
|
710
739
|
while True:
|
pyerualjetwork/planeat_cuda.py
CHANGED
@@ -290,7 +290,7 @@ def evolver(weights,
|
|
290
290
|
|
291
291
|
good_weights = weights[slice_center:]
|
292
292
|
bad_weights = weights[:slice_center]
|
293
|
-
|
293
|
+
best_weight = good_weights[-1]
|
294
294
|
|
295
295
|
good_activations = list(activation_potentiations[slice_center:])
|
296
296
|
bad_activations = list(activation_potentiations[:slice_center])
|
@@ -305,46 +305,47 @@ def evolver(weights,
|
|
305
305
|
normalized_fitness = abs(normalization(fitness, dtype=dtype))
|
306
306
|
|
307
307
|
best_fitness = normalized_fitness[-1]
|
308
|
+
epsilon = cp.finfo(float).eps
|
309
|
+
|
310
|
+
child_W = cp.empty(bad_weights[0].shape, dtype=dtype)
|
311
|
+
child_act = bad_activations.copy()
|
308
312
|
|
309
313
|
for i in range(len(bad_weights)):
|
310
|
-
|
311
|
-
|
314
|
+
|
312
315
|
if policy == 'aggresive':
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
second_parent_act,
|
317
|
-
cross_over_mode=cross_over_mode,
|
318
|
-
activation_selection_add_prob=activation_selection_add_prob,
|
319
|
-
activation_selection_change_prob=activation_selection_change_prob,
|
320
|
-
activation_selection_rate=activation_selection_rate,
|
321
|
-
bad_genomes_selection_prob=bad_genomes_selection_prob,
|
322
|
-
first_parent_fitness=best_fitness,
|
323
|
-
fitness_bias=fitness_bias,
|
324
|
-
second_parent_fitness=normalized_fitness[s_i]
|
325
|
-
)
|
316
|
+
first_parent_W = best_weight
|
317
|
+
first_parent_act = best_activations
|
318
|
+
|
326
319
|
elif policy == 'explorer':
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
second_parent_act,
|
331
|
-
cross_over_mode=cross_over_mode,
|
332
|
-
activation_selection_add_prob=activation_selection_add_prob,
|
333
|
-
activation_selection_change_prob=activation_selection_change_prob,
|
334
|
-
activation_selection_rate=activation_selection_rate,
|
335
|
-
bad_genomes_selection_prob=bad_genomes_selection_prob,
|
336
|
-
first_parent_fitness=normalized_fitness[i],
|
337
|
-
fitness_bias=fitness_bias,
|
338
|
-
second_parent_fitness=normalized_fitness[s_i]
|
339
|
-
)
|
340
|
-
|
320
|
+
first_parent_W = good_weights[i]
|
321
|
+
first_parent_act = good_activations[i]
|
322
|
+
|
341
323
|
else: raise ValueError("policy parameter must be: 'aggresive' or 'explorer'")
|
324
|
+
|
325
|
+
second_parent_W, second_parent_act, s_i = second_parent_selection(good_weights, bad_weights, good_activations, bad_activations, bad_genomes_selection_prob)
|
326
|
+
|
327
|
+
child_W[i], child_act[i] = cross_over(first_parent_W,
|
328
|
+
second_parent_W,
|
329
|
+
first_parent_act,
|
330
|
+
second_parent_act,
|
331
|
+
cross_over_mode=cross_over_mode,
|
332
|
+
activation_selection_add_prob=activation_selection_add_prob,
|
333
|
+
activation_selection_change_prob=activation_selection_change_prob,
|
334
|
+
activation_selection_rate=activation_selection_rate,
|
335
|
+
bad_genomes_selection_prob=bad_genomes_selection_prob,
|
336
|
+
first_parent_fitness=best_fitness,
|
337
|
+
fitness_bias=fitness_bias,
|
338
|
+
second_parent_fitness=normalized_fitness[s_i],
|
339
|
+
epsilon=epsilon
|
340
|
+
)
|
341
|
+
|
342
342
|
|
343
343
|
if mutations is True:
|
344
344
|
mutation_prob = random.uniform(0, 1)
|
345
345
|
|
346
346
|
if mutation_prob > bad_genomes_mutation_prob:
|
347
|
-
if (save_best_genom == True and not np.array_equal(good_weights[i],
|
347
|
+
if (save_best_genom == True and not np.array_equal(good_weights[i], best_weight)) or save_best_genom == False:
|
348
|
+
|
348
349
|
good_weights[i], good_activations[i] = mutation(good_weights[i],
|
349
350
|
good_activations[i],
|
350
351
|
activation_mutate_prob=activation_mutate_prob,
|
@@ -353,7 +354,8 @@ def evolver(weights,
|
|
353
354
|
activation_change_prob=activation_mutate_change_prob,
|
354
355
|
weight_mutate_prob=weight_mutate_prob,
|
355
356
|
threshold=weight_mutate_rate,
|
356
|
-
genome_fitness=normalized_fitness[i]
|
357
|
+
genome_fitness=normalized_fitness[i],
|
358
|
+
epsilon=epsilon
|
357
359
|
)
|
358
360
|
|
359
361
|
elif mutation_prob < bad_genomes_mutation_prob:
|
@@ -365,13 +367,14 @@ def evolver(weights,
|
|
365
367
|
activation_change_prob=activation_mutate_change_prob,
|
366
368
|
weight_mutate_prob=weight_mutate_prob,
|
367
369
|
threshold=weight_mutate_rate,
|
368
|
-
genome_fitness=normalized_fitness[i]
|
370
|
+
genome_fitness=normalized_fitness[i],
|
371
|
+
epsilon=epsilon
|
369
372
|
)
|
370
373
|
|
371
374
|
if bar_status: progress.update(1)
|
372
375
|
|
373
|
-
weights = cp.vstack((
|
374
|
-
activation_potentiations =
|
376
|
+
weights = cp.vstack((child_W, good_weights))
|
377
|
+
activation_potentiations = child_act + good_activations
|
375
378
|
|
376
379
|
### INFO PRINTING CONSOLE
|
377
380
|
|
@@ -494,7 +497,8 @@ def cross_over(first_parent_W,
|
|
494
497
|
bad_genomes_selection_prob,
|
495
498
|
first_parent_fitness,
|
496
499
|
second_parent_fitness,
|
497
|
-
fitness_bias
|
500
|
+
fitness_bias,
|
501
|
+
epsilon):
|
498
502
|
"""
|
499
503
|
Performs a crossover operation on two sets of weights and activation functions.
|
500
504
|
This function combines two individuals (represented by their weights and activation functions)
|
@@ -529,6 +533,8 @@ def cross_over(first_parent_W,
|
|
529
533
|
|
530
534
|
fitness_bias (float): A bias factor used to favor fitter parents during crossover operations.
|
531
535
|
|
536
|
+
epsilon (float): Small epsilon constant
|
537
|
+
|
532
538
|
Returns:
|
533
539
|
tuple: A tuple containing:
|
534
540
|
- child_W (numpy.ndarray): The weight matrix of the new individual created by crossover.
|
@@ -553,7 +559,8 @@ def cross_over(first_parent_W,
|
|
553
559
|
bad_genomes_selection_prob=0.7,
|
554
560
|
first_parent_fitness=0.9,
|
555
561
|
second_parent_fitness=0.85,
|
556
|
-
fitness_bias=0.6
|
562
|
+
fitness_bias=0.6,
|
563
|
+
epsilon=cp.finfo.eps
|
557
564
|
)
|
558
565
|
```
|
559
566
|
"""
|
@@ -576,7 +583,7 @@ def cross_over(first_parent_W,
|
|
576
583
|
|
577
584
|
undominant_parent_W = cp.copy(second_parent_W)
|
578
585
|
undominant_parent_act = second_parent_act
|
579
|
-
succes = second_parent_fitness
|
586
|
+
succes = second_parent_fitness + epsilon
|
580
587
|
|
581
588
|
elif decision == 'second_parent':
|
582
589
|
dominant_parent_W = cp.copy(second_parent_W)
|
@@ -584,7 +591,7 @@ def cross_over(first_parent_W,
|
|
584
591
|
|
585
592
|
undominant_parent_W = cp.copy(first_parent_W)
|
586
593
|
undominant_parent_act = first_parent_act
|
587
|
-
succes = first_parent_fitness
|
594
|
+
succes = first_parent_fitness + epsilon
|
588
595
|
|
589
596
|
while True:
|
590
597
|
|
@@ -675,7 +682,8 @@ def mutation(weight,
|
|
675
682
|
activation_change_prob,
|
676
683
|
weight_mutate_prob,
|
677
684
|
threshold,
|
678
|
-
genome_fitness
|
685
|
+
genome_fitness,
|
686
|
+
epsilon):
|
679
687
|
"""
|
680
688
|
Performs mutation on the given weight matrix and activation functions.
|
681
689
|
- The weight matrix is mutated by randomly changing its values based on the mutation probability.
|
@@ -700,6 +708,8 @@ def mutation(weight,
|
|
700
708
|
|
701
709
|
genome_fitness (float): Fitness value of genome
|
702
710
|
|
711
|
+
epsilon (float): Small epsilon constant
|
712
|
+
|
703
713
|
Returns:
|
704
714
|
tuple: A tuple containing:
|
705
715
|
- mutated_weight (numpy.ndarray): The weight matrix after mutation.
|
@@ -728,7 +738,7 @@ def mutation(weight,
|
|
728
738
|
row_end = weight.shape[0]
|
729
739
|
col_end = weight.shape[1]
|
730
740
|
|
731
|
-
threshold = threshold * genome_fitness
|
741
|
+
threshold = threshold * (genome_fitness + epsilon)
|
732
742
|
new_threshold = threshold
|
733
743
|
|
734
744
|
while True:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyerualjetwork
|
3
|
-
Version: 4.2.
|
3
|
+
Version: 4.2.0b4
|
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,4 +1,4 @@
|
|
1
|
-
pyerualjetwork/__init__.py,sha256=
|
1
|
+
pyerualjetwork/__init__.py,sha256=VRFLz0qjl7ZNj1nm6TFjuEit1_lEp-qO6GuBhakW_wA,2177
|
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=HjyW2QE18age6J8iG0jpbwqGOylL_nM-vE2CLbP9Wes,14690
|
@@ -13,12 +13,12 @@ pyerualjetwork/model_operations.py,sha256=hnhR8dtoICNJWIwGgJ65-LN3GYN_DYH4LMe6Yp
|
|
13
13
|
pyerualjetwork/model_operations_cuda.py,sha256=XnKKq54ZLaqCm-NaJ6d8IToACKcKg2Ttq6moowVRRWo,13365
|
14
14
|
pyerualjetwork/plan.py,sha256=EobwajGSIgbOujkzDKb-Kea0LGRHqpK3Xy1Le8VBAe8,34422
|
15
15
|
pyerualjetwork/plan_cuda.py,sha256=iCcAHLzVw_VyjhkFHXzBWiedwbnpI1MCXNJgSDgZxWw,36065
|
16
|
-
pyerualjetwork/planeat.py,sha256=
|
17
|
-
pyerualjetwork/planeat_cuda.py,sha256=
|
16
|
+
pyerualjetwork/planeat.py,sha256=Lr79cXaHsTYkLEA9zrrI0mIdLDy5l5Qa0_tlkqugxGE,41071
|
17
|
+
pyerualjetwork/planeat_cuda.py,sha256=qHwISR1JOaTYklBKf59BQ-ixPDlludk61dJMrp-wNi0,41038
|
18
18
|
pyerualjetwork/ui.py,sha256=wu2BhU1k-w3Kcho5Jtq4SEKe68ftaUeRGneUOSCVDjU,575
|
19
19
|
pyerualjetwork/visualizations.py,sha256=QaYSIyVkJZ8NqpBKArQKkI1y37nCQo_KIM98IMssnRc,28766
|
20
20
|
pyerualjetwork/visualizations_cuda.py,sha256=F60vQ92AXlMgBka3InXnOtGoM25vQJAlBIU2AlYTwks,29200
|
21
|
-
pyerualjetwork-4.2.
|
22
|
-
pyerualjetwork-4.2.
|
23
|
-
pyerualjetwork-4.2.
|
24
|
-
pyerualjetwork-4.2.
|
21
|
+
pyerualjetwork-4.2.0b4.dist-info/METADATA,sha256=B8Katp20szrJ7XPZSy4YfVNsdJSLUJsepiZ5dasYDww,7795
|
22
|
+
pyerualjetwork-4.2.0b4.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
23
|
+
pyerualjetwork-4.2.0b4.dist-info/top_level.txt,sha256=BRyt62U_r3ZmJpj-wXNOoA345Bzamrj6RbaWsyW4tRg,15
|
24
|
+
pyerualjetwork-4.2.0b4.dist-info/RECORD,,
|
File without changes
|
File without changes
|