mindspore.ops.ApplyGradientDescent
- class mindspore.ops.ApplyGradientDescent[源代码]
通过从 var 中减去 alpha * delta 来更新 var 。
\[var = var - \alpha * \delta\]其中 \(\alpha\) 代表 alpha , \(\delta\) 代表 delta 。
var 和 delta 的输入遵循隐式类型转换规则,使数据类型一致。如果它们具有不同的数据类型,则低精度数据类型将转换为相对最高精度数据类型。
- 输入:
var (Union[Parameter, Tensor]) - 要更新的变量,为任意维度,其数据类型为float32或float16。其shape为 \((N, *)\) ,其中 \(*\) 为任意数量的额外维度。
alpha (Union[Number, Tensor]) - 调节系数,必须是Scalar。数据类型为float32或float16。
delta (Tensor) - 变化的Tensor,shape与 var 相同。
- 输出:
Tensor,更新后的 var 。
- 异常:
TypeError - 如果 var 或 alpha 的数据类型既不是float16也不是float32。
TypeError - 如果 delta 不是Tensor。
TypeError - 如果 alpha 既不是数值型也不是Tensor。
TypeError - 如果不支持 var 和 delta 数据类型转换。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import numpy as np >>> from mindspore import Tensor, nn, ops, Parameter >>> class Net(nn.Cell): ... def __init__(self): ... super(Net, self).__init__() ... self.apply_gradient_descent = ops.ApplyGradientDescent() ... self.var = Parameter(Tensor(np.ones([2, 2]).astype(np.float32)), name="var") ... self.alpha = 0.001 ... def construct(self, delta): ... out = self.apply_gradient_descent(self.var, self.alpha, delta) ... return out ... >>> net = Net() >>> delta = Tensor(np.array([[0.1, 0.1], [0.1, 0.1]]).astype(np.float32)) >>> output = net(delta) >>> print(output) [[0.9999 0.9999] [0.9999 0.9999]]