RPROP Algorithm.
Parameters:
      * params (iterable) -- iterable of parameters to optimize
        or dicts defining parameter groups
  * **lr** (*float**, **optional*) -- learning rate (default:
    1e-2)

  * **etas** (*Tuple**[**float**, **float**]**, **optional*) --
    pair of (etaminus, etaplus), that are multiplicative increase
    and decrease factors (default: (0.5, 1.2))

  * **step_sizes** (*Tuple**[**float**, **float**]**, **optional*)
    -- a pair of minimal and maximal allowed step sizes (default:
    (1e-6, 50))

  * **foreach** (*bool**, **optional*) -- whether foreach
    implementation of optimizer is used. If unspecified by the
    user (so foreach is None), we will try to use foreach over the
    for-loop implementation on CUDA, since it is usually
    significantly more performant. (default: None)

  * **maximize** (*bool**, **optional*) -- maximize the params
