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.