Модуль Optimizer. - aeDeaf/physlearn GitHub Wiki
Основной функцией в любом "оптимизаторе" является функция optimize
. Все методы возвращают numpy массив, состоящий из найденных параметров.
Полезный совет: после того, как оптимизатор завершил свою работу и вернул подобранные параметры, необходимо вызвать метод roll_matrixes, передав ему в качестве параметра найденные веса. Без этого в НС будут хз какие параметры.
Метод Нелдера-Мида
Модуль Optimizer.NelderMead
.
optimize(func, dim, end_cond, min_element=-1, max_element=1, end_method='max_iter', alpha=1, beta=0.5, gamma=2)
func - оптимизируемая функция, должна принимать в качестве параметра массив Numpy.
dim - число, размерность
end_cond - число, условие завершения работы алгоритма. Обычно это максимальное число итераций, но возможен и другой вариант (он нам вряд ли подойдет, поэтому расскажу о нем при личной встрече).
min_element, max_element - числа, минимальное и максимальное число, которое предается генератору случайных чисел при создании случайного набора из dim+1 вектора.
end_method - не трогай, связанно с end_cond и, опять же, расскажу при встрече.
alpha, beta, gamma - числа, параметры алгоритма.
Другие функции из модуля не используй, они тебе вряд ли будут нужны.
Метод дифференциальной эволюции
Модуль Optimizer.DifferentialEvolution
optimize(func, amount_of_individuals, dim, end_cond, end_method='max_iter', f=0.5, p=0.9, min_element=-1, max_element=1, debug_pop_print=-1)
func - оптимизируемая функция. Требования аналогичны методу Нелдера-Мида.
amount_of_individuals - число, количество особей в популяции.
dim - размерность функции func.
end_cond - аналогично, максимальное число итераций.
end_method - не трогай, иначе вообще никак работать не будет (потому что только пока один метод определения конца работы сделан).
f, p - числа, параметры алгоритма.
min_element, max_element - аналогично методу Нелдера-Мида.
debug_pop_print - число, выводит тебе всю популяцию на экран раз в debug_pop_print итераций. Если debug_pop_print=-1 (как по умолчанию) то не выводит ничего и никогда (да, знаю, что нужно переделать, но мне лень).