mindspore.ops.assign_sub

mindspore.ops.assign_sub(variable, value)[源代码]

从网络参数减去特定数值来更新网络参数。

输入 variablevalue 会通过隐式数据类型转换使数据类型保持一致。如果数据类型不同,低精度的数据类型会被转换到高精度的数据类型。如果 value 为标量会被自动转换为Tensor,其数据类型会与 variable 保持一致。

说明

由于 variable 类型为 Parameter ,其数据类型不能改变,因此只允许 value 的数据类型转变为 variable 的数据类型。而且由于不同设备支持的转换类型会有所不同,推荐在使用此操作时使用相同的数据类型。

参数:
  • variable (Parameter) - 待更新的网络参数,shape: \((N,*)\) ,其中 \(*\) 表示任何数量的附加维度。

  • value (Tensor) - 从 variable 减去的值,与 variable 的shape相同。使用此操作时推荐使用相同的数据类型。

返回:

Tensor,shape和数据类型与 variable 相同。

异常:
  • TypeError - value 不是标量或Tensor。

  • RuntimeError - variablevalue 之间的类型转换不被支持。

支持平台:

Ascend GPU CPU

样例:

>>> variable = mindspore.Parameter(initializer(1, [1], mindspore.int32), name="global_step")
>>> value = Tensor(np.ones([1]).astype(np.int32) * 100)
>>> ops.assign_sub(variable, value)
>>> print(variable.asnumpy())
[-99]