You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

mindspore.nn.LARS.rst 2.6 kB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. mindspore.nn.LARS
  2. ==================
  3. .. py:class:: mindspore.nn.LARS(*args, **kwargs)
  4. LARS算法的实现。
  5. LARS算法采用大量的优化技术。详见论文 `LARGE BATCH TRAINING OF CONVOLUTIONAL NETWORKS <https://arxiv.org/abs/1708.03888>`_。
  6. 更新公式如下:
  7. .. math::
  8. \begin{array}{ll} \\
  9. &\newline
  10. &\hline \\
  11. &\textbf{Parameters}: \text{base learning rate } \gamma_{0} , \text{ momentum m}, \text{ weight decay }
  12. \lambda , \\
  13. &\hspace{5mm}\text{ LARS coefficient } \eta , \text{ number of steps } T \\
  14. &\textbf{Init}: \text{ t=0, v=0, init weight } w_{0}^{l} \text{ for each layer } l \\[-1.ex]
  15. &\newline
  16. &\hline \\
  17. &\textbf{while} \text{ t<T for each layer } l \textbf{ do} \\
  18. &\hspace{5mm}g_{t}^{l} \leftarrow \nabla L\left(w_{t}^{l}\right) \\
  19. &\hspace{5mm}\gamma_{t} \leftarrow \gamma_{0} *\left(1-\frac{t}{T}\right)^{2} \\
  20. &\hspace{5mm}\gamma^{l} \leftarrow \eta *\frac{\left\|w_{t}^{l}\right\|}{\left\|g_{t}^{l}\right\|+
  21. \lambda\left\|w_{t}^{l}\right\|} \text{(compute the local LR } \gamma^{ l)} \\
  22. &\hspace{5mm}v_{t+1}^{l} \leftarrow m v_{t}^{l}+\gamma_{t+1} * \gamma^{l} *\left(g_{t}^{l}+\lambda
  23. w_{t}^{l}\right) \\
  24. &\hspace{5mm}w_{t+1}^{l} \leftarrow w_{t}^{l}-v_{t+1}^{l} \\
  25. &\textbf{ end while } \\[-1.ex]
  26. &\newline
  27. &\hline \\[-1.ex]
  28. \end{array}
  29. :math:`w` 表示 `params`,:math:`g` 表示 `gradients` ,:math:`t` 表示当前step,:math:`\lambda` 表示 `optimizer` 配置的 `weight_decay` ,:math:`\gamma` 表示 `optimizer` 配置的 `learning_rate` ,:math:`\eta` 表示 `coefficient` 。
  30. **参数:**
  31. - **optimizer** (Optimizer) - 待封装和修改梯度的MindSpore优化器。
  32. - **epsilon** (float) - 将添加到分母中,提高数值稳定性。默认值:1e-05。
  33. - **coefficient** (float) - 计算局部学习速率的信任系数。默认值:0.001。
  34. - **use_clip** (bool) - 计算局部学习速率时是否裁剪。默认值:False。
  35. - **lars_filter** (Function) - 用于指定使用LARS算法的网络参数。默认值:lambda x: 'LayerNorm' not in x.name and 'bias' not in x.name。
  36. **输入:**
  37. - **gradients** (tuple[Tensor]) - 优化器中 `params` 的梯度,shape与优化器中的 `params` 相同。
  38. **输出:**
  39. Union[Tensor[bool], tuple[Parameter]],取决于 `optimizer` 的输出。