mindspore.experimental.optim.Adagrad
==========================================

.. py:class:: mindspore.experimental.optim.Adagrad(params, lr=1e-2, lr_decay=0.0, weight_decay=0.0, initial_accumulator_value=0.0, eps=1e-10, *, maximize=False)

    Adagrad算法的实现。

    更新公式如下:

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \gamma \text{ (lr)}, \: \theta_0 \text{ (params)}, \: f(\theta)
                \text{ (objective)}, \: \lambda \text{ (weight decay)},                          \\
            &\hspace{12mm}    \tau \text{ (initial accumulator value)}, \: \eta\text{ (lr decay)}\\
            &\textbf{initialize} :  state\_sum_0 \leftarrow 0                             \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do}                         \\
            &\hspace{5mm}g_t           \leftarrow   \nabla_{\theta} f_t (\theta_{t-1})           \\
            &\hspace{5mm} \tilde{\gamma}    \leftarrow \gamma / (1 +(t-1) \eta)                  \\
            &\hspace{5mm} \textbf{if} \: \lambda \neq 0                                          \\
            &\hspace{10mm} g_t \leftarrow g_t + \lambda \theta_{t-1}                             \\
            &\hspace{5mm}state\_sum_t  \leftarrow  state\_sum_{t-1} + g^2_t                      \\
            &\hspace{5mm}\theta_t \leftarrow
                \theta_{t-1}- \tilde{\gamma} \frac{g_t}{\sqrt{state\_sum_t}+\epsilon}            \\
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
            &\bf{return} \:  \theta_t                                                     \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
       \end{aligned}

    .. warning::
        这是一个实验性的优化器接口,需要和 `LRScheduler <https://www.mindspore.cn/docs/zh-CN/r2.3.0rc2/api_python/mindspore.experimental.html#lrscheduler%E7%B1%BB>`_ 下的动态学习率接口配合使用。

    参数:
        - **params** (Union[list(Parameter), list(dict)]) - 网络参数的列表或指定了参数组的列表。
        - **lr** (Union[int, float, Tensor], 可选) - 学习率。默认值:``1e-2``。
        - **lr_decay** (float, 可选) - 学习率衰减系数。默认值:``0.``。
        - **weight_decay** (float, 可选) - 权重衰减(L2 penalty)。默认值:``0.``。
        - **initial_accumulator_value** (float, 可选) - 初始累加器的值。默认值:``0.``。
        - **eps** (float, 可选) - 加在分母上的值,以确保数值稳定。必须大于0。默认值:``1e-10``。

    关键字参数:
        - **maximize** (bool, 可选) - 是否根据目标函数最大化网络参数。默认值:``False``。

    输入:
        - **gradients** (tuple[Tensor]) - 网络权重的梯度。

    异常:
        - **ValueError** - 学习率不是int、float或Tensor。
        - **ValueError** - 学习率小于0。
        - **ValueError** - 学习率衰减系数小于0。
        - **ValueError** - `weight_decay` 小于0。
        - **ValueError** - `initial_accumulator_value` 小于0。
        - **ValueError** - `eps` 小于0。