Пакет PYPI для значений стоимости конверсии (меньше лучше) для значений фитнеса (больше лучше) и наоборот
pip install cost2fitness
Это пакет, содержащий несколько методов преобразования массивов Numpy, зависели от масштабов, средних значений и так далее. Но основным способом его использования является преобразование от значений затрат (меньше лучше) в значения фитнеса (больше лучше) и наоборот. Это может быть очень полезно, когда вы используете
Есть несколько простых трансформаторов. Каждый трансформатор является подклассом класса BaseTransformer содержащего поля name и transform(array) , который преобразует массив ввода в новое представление.
Контрольный список:
ReverseByAverageAntiMax ,AntiMaxPercent(percent) ,Min2Zero ,Min2Value(value) ,ProbabilityView (преобразует данные в вероятности),SimplestReverse ,AlwaysOnes (возвращает множество своих),NewAvgByMult(new_average) ,NewAvgByShift(new_average)Divider(divider_number_or_array) (разделяет массив по номеру или массиву, полезно для нормализации фиксированного запуска)Argmax (возвращает положение максимального элемента в массиве)Prob2Class(threshold = 0.5) (для преобразования вероятностей в классы 0/1)ToNumber (преобразует массив в один номер, получив первый элемент)Вы можете создать свой трансформатор, используя простую логику из файла.
import numpy as np
from cost2fitness import Min2Zero
tf = Min2Zero ()
arr_of_scores = np . array ([ 10 , 8 , 7 , 5 , 8 , 9 , 20 , 12 , 6 , 18 ])
tf . transform ( arr_of_scores )
# array([ 5, 3, 2, 0, 3, 4, 15, 7, 1, 13]) Вы также можете объединить эти трансформаторы, используя трубопровод Pl . Например:
import numpy as np
from cost2fitness import ReverseByAverage , AntiMax , Min2Zero , Pl
pipe = Pl ([
Min2Zero (),
ReverseByAverage (),
AntiMax ()
])
arr_of_scores = np . array ([ 10 , 8 , 7 , 5 , 8 , 9 ])
# return each result of pipeline transformation (with input)
pipe . transform ( arr_of_scores , return_all_steps = True )
#array([[10. , 8. , 7. , 5. , 8. ,
# 9. ],
# [ 5. , 3. , 2. , 0. , 3. ,
# 4. ],
# [ 0.66666667, 2.66666667, 3.66666667, 5.66666667, 2.66666667,
# 1.66666667],
# [ 5. , 3. , 2. , 0. , 3. ,
# 4. ]])
# return only result of transformation
pipe . transform ( arr_of_scores , return_all_steps = False )
#array([5., 3., 2., 0., 3., 4.]) Существует функция plot_scores для построения результатов процесса преобразования. У него есть аргументы:
scores : 2D Numpy Array 2d Numpy Array со структурой [start_values, first_transform(start_values), second_transform(first_transform), ...] , где каждый объект представляет собой 1D-аразирование результатов (значения/затраты/подходящие).names : None /строки списка, необязательные имена для каждого шага для макет сюжета. По умолчанию None .kind : СТР, необязательно для «кроме» каждого нового столбца будет рядом с предыдущим; Для «под» будет новый сюжет под предыдущим. По умолчанию «рядом».save_as : None /str, необязательный путь файла для сохранения сюжета. По умолчанию None . Код










Код


Я сделал здесь базовые инструменты нейронной сети, потому что очень необходимо использовать простые сети с некоторыми задачами обучения подкрепления , но общие пакеты, такие как кера, работают очень медленно, если вам нужно просто предсказать (прямое распространение) только для 1 выборки, но много раз. Таким образом, для этих случаев будет быстрее использовать простые пакеты на основе Numpy.
Не было так сложно использовать эту логику трансформаторов для создания нейронных сетей. Таким образом, этот пакет имеет следующие слои нейронной сети в качестве трансформаторов:
Активации :
SoftmaxReluLeakyRelu(alpha = 0.01)SigmoidTanhArcTanSwish(beta = 0.25)SoftplusSoftsignElu(alpha)Selu(alpha, scale)Плотные слои инструменты :
Bias(bias_len, bias_array = None) - чтобы добавить смещение с помощью длины bias_len . Если bias_array None , использует случайное смещениеMatrixDot(from_size, to_size, matrix_array = None)NNStep(from_size, to_size, matrix_array = None, bias_array = None) - это MatrixDot и Bias вместе, если вы хотите их быстрее создавать И есть несколько методов помощников для использования pipeline объекта, такого как нейронная сеть (только для прямого распространения , конечно):
Методы объектов pipeline :
get_shapes() - чтобы получить список форм необходимого массива для NNtotal_weights() - Получите количество весов для общего NNset_weights(weights) - Установите вес (в качестве списка массивов с необходимыми формами) для NNОдно функционирует :
arr_to_weigths(arr, shapes) -преобразует 1D-арест arr в список массивов с shapes форм, чтобы поместить его в метод set_weightsСмотрите самый простой пример