add_params
elephas.utils.functional_utils.add_params(param_list_left: List[<built-in function array>], param_list_right: List[<built-in function array>])
Add two lists of parameters one by one
:param param_list_left: list of numpy arrays :param param_list_right: list of numpy arrays :return: list of numpy arrays
subtract_params
elephas.utils.functional_utils.subtract_params(param_list_left: List[<built-in function array>], param_list_right: List[<built-in function array>])
Subtract two lists of parameters
:param param_list_left: list of numpy arrays :param param_list_right: list of numpy arrays :return: list of numpy arrays
get_neutral
elephas.utils.functional_utils.get_neutral(array_list: List[<built-in function array>])
Get list of zero-valued numpy arrays for specified list of numpy arrays
:param array_list: list of numpy arrays :return: list of zeros of same shape as input
divide_by
elephas.utils.functional_utils.divide_by(array_list: List[<built-in function array>], num_workers: int)
Divide a list of parameters by an integer num_workers.
:param array_list: :param num_workers: :return:
average_and_subtract
elephas.utils.functional_utils.average_and_subtract(base: List[<built-in function array>], deltas: List[List[<built-in function array>]])
Return [base[i] - mean(d[i] for d in deltas)] elementwise.
Equivalent to repeatedly applying subtract_params(base, divide_by(d, N))
once per delta, but with a single accumulator and one final scaled subtract.
Saves 2N model-sized allocations on the driver, which dominates the
per-epoch aggregation cost for large models / many workers.