Функция отображения из списка в данные
Я смотрю на изменение пакета hnn для поддержки различных функций активации для каждого node в сети.
В частности, эта строка и эта строка использует определенную функцию (активацию), но я пытаюсь чтобы расширить это, чтобы поддержать что-то вроде:
evalNet [email protected](Network{..}) inputs activations = do
s <- foldM (\x -> computeStepM n x (activations!!N)) state inputsV
где N
- id/index node.
В настоящее время я являюсь этапом, когда у меня есть список функций активации той же длины, что и количество узлов в сети.
Мне нужна помощь (поскольку я потерян в исходном коде пакета), чтобы найти способ применения функции Nth
activations
в списке.
EDIT: я пробовал подход StateT
, используя tick
(из документации) и используя zip
функцию, обе дают несколько исполнений за каждый шаг, поэтому окончательный результат становится неправильным
Ответы
Ответ 1
Для карты вам может понадобиться нечто вроде
as = [(+1),(*2),(+(-3))]
xs = [4,5,6]
main = print $ zipWith ($) as xs
Сложность сложнее, но может быть выполнена с использованием той же идеи: Zip входы с соответствующими функциями активации и сменой функции сложенной для использования значений входящих кортежей.
Однако, я сомневаюсь, что вам действительно нужно/нужно изменить сгиб. Если я не ошибаюсь, фолд должен просто перейти к списку функций активации. Так что на самом деле делать нечего.