mindarmour.utils
MindArmour的工具方法。
- class mindarmour.utils.LogUtil[源代码]
- 日志记录模块。 - 在长期运行的脚本中记录随时间推移的日志统计信息。 - 异常: - SyntaxError - 创建此类异常。 
 - add_handler(handler)[源代码]
- 添加日志模块支持的其他处理程序。 - 参数: - handler (logging.Handler) - 日志模块支持的其他处理程序。 
 - 异常: - ValueError - 输入handler不是logging.Handler的实例。 
 
 - debug(tag, msg, *args)[源代码]
- 记录’[tag] msg % args’,严重性为’DEBUG’。 - 参数: - tag (str) - Logger标记。 
- msg (str) - Logger消息。 
- args (Any) - 辅助值。 
 
 - error(tag, msg, *args)[源代码]
- 记录’[tag] msg % args’,严重性为’ERROR’。 - 参数: - tag (str) - Logger标记。 
- msg (str) - Logger消息。 
- args (Any) - 辅助值。 
 
 - info(tag, msg, *args)[源代码]
- 记录’[tag] msg % args’,严重性为’INFO’。 - 参数: - tag (str) - Logger标记。 
- msg (str) - Logger消息。 
- args (Any) - 辅助值。 
 
 - set_level(level)[源代码]
- 设置此logger的日志级别,级别必须是整数或字符串。支持的级别为 ‘NOTSET’(integer: 0)、’ERROR’(integer: 1-40)、’WARNING’(‘WARN’, integer: 1-30)、’INFO’(integer: 1-20)以及’DEBUG’(integer: 1-10) - 例如,如果logger.set_level(‘WARNING’)或logger.set_level(21),则在运行时将打印脚本中的logger.warn()和logger.error(),而logger.info()或logger.debug()将不会打印。 - 参数: - level (Union[int, str]) - logger的级别。 
 
 
- class mindarmour.utils.GradWrapWithLoss(network)[源代码]
- 构造一个网络来计算输入空间中损失函数的梯度,并由 weight 加权。 - 参数: - network (Cell) - 要包装的目标网络。 
 - 样例: - >>> from mindspore import Tensor >>> from mindarmour.utils import GradWrapWithLoss >>> from mindarmour.utils.util import WithLossCell >>> import mindspore.ops.operations as P >>> class Net(nn.Cell): ... def __init__(self): ... super(Net, self).__init__() ... self._softmax = P.Softmax() ... self._Dense = nn.Dense(10,10) ... self._squeeze = P.Squeeze(1) ... def construct(self, inputs): ... out = self._softmax(inputs) ... out = self._Dense(out) ... return self._squeeze(out) >>> data = Tensor(np.ones([2, 1, 10]).astype(np.float32)*0.01) >>> labels = Tensor(np.ones([2, 10]).astype(np.float32)) >>> net = Net() >>> loss_fn = nn.SoftmaxCrossEntropyWithLogits() >>> loss_net = WithLossCell(net, loss_fn) >>> grad_all = GradWrapWithLoss(loss_net) >>> out_grad = grad_all(data, labels) 
- class mindarmour.utils.GradWrap(network)[源代码]
- 构建一个网络,以计算输入空间中网络输出的梯度,并由 weight 加权,表示为雅可比矩阵。 - 参数: - network (Cell) - 要包装的目标网络。 
 - 样例: - >>> from mindspore import Tensor >>> from mindarmour.utils import GradWrap >>> from mindarmour.utils.util import WithLossCell >>> import mindspore.ops.operations as P >>> class Net(nn.Cell): ... def __init__(self): ... super(Net, self).__init__() ... self._softmax = P.Softmax() ... self._Dense = nn.Dense(10,10) ... self._squeeze = P.Squeeze(1) ... def construct(self, inputs): ... out = self._softmax(inputs) ... out = self._Dense(out) ... return self._squeeze(out) >>> net = Net() >>> data = Tensor(np.ones([2, 1, 10]).astype(np.float32)*0.01) >>> labels = Tensor(np.ones([2, 10]).astype(np.float32)) >>> num_classes = 10 >>> sens = np.zeros((data.shape[0], num_classes)).astype(np.float32) >>> sens[:, 1] = 1.0 >>> wrap_net = GradWrap(net) >>> wrap_net(data, Tensor(sens))